Updated Game to use relative file URLs

This commit is contained in:
Riley Testut 2015-11-01 03:13:21 -06:00
parent 2184c8aa68
commit 2aa3535ff3
4 changed files with 20 additions and 5 deletions

View File

@ -130,15 +130,26 @@ class DatabaseManager
for URL in URLs for URL in URLs
{ {
let identifier = FileHash.sha1HashOfFileAtPath(URL.path) as String
var filename = identifier
if let pathExtension = URL.pathExtension
{
filename += "." + pathExtension
}
let game = Game.insertIntoManagedObjectContext(managedObjectContext) let game = Game.insertIntoManagedObjectContext(managedObjectContext)
game.name = URL.URLByDeletingPathExtension?.lastPathComponent ?? NSLocalizedString("Game", comment: "") game.name = URL.URLByDeletingPathExtension?.lastPathComponent ?? NSLocalizedString("Game", comment: "")
game.identifier = FileHash.sha1HashOfFileAtPath(URL.path) game.identifier = FileHash.sha1HashOfFileAtPath(URL.path)
game.fileURL = self.gamesDirectoryURL().URLByAppendingPathComponent(game.identifier) game.fileURL = self.gamesDirectoryURL().URLByAppendingPathComponent(game.identifier)
game.identifier = identifier
game.filename = filename
game.typeIdentifier = Game.typeIdentifierForURL(URL) ?? kUTTypeDeltaGame as String game.typeIdentifier = Game.typeIdentifierForURL(URL) ?? kUTTypeDeltaGame as String
do do
{ {
try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: game.fileURL) try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: game.fileURL)
try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: DatabaseManager.sharedManager.gamesDirectoryURL().URLByAppendingPathComponent(game.identifier + ".smc"))
identifiers.append(game.identifier) identifiers.append(game.identifier)
} }

View File

@ -15,7 +15,7 @@ import CoreData
enum GameAttributes: String enum GameAttributes: String
{ {
case artworkURL case artworkURL
case fileURL case filename
case identifier case identifier
case name case name
case typeIdentifier case typeIdentifier
@ -24,7 +24,7 @@ enum GameAttributes: String
extension Game extension Game
{ {
@NSManaged var artworkURL: NSURL? @NSManaged var artworkURL: NSURL?
@NSManaged var fileURL: NSURL @NSManaged var filename: String
@NSManaged var identifier: String @NSManaged var identifier: String
@NSManaged var name: String @NSManaged var name: String
@NSManaged var typeIdentifier: String @NSManaged var typeIdentifier: String

View File

@ -15,6 +15,10 @@ import SNESDeltaCore
@objc(Game) @objc(Game)
class Game: NSManagedObject, GameType class Game: NSManagedObject, GameType
{ {
var fileURL: NSURL {
let fileURL = DatabaseManager.gamesDirectoryURL.URLByAppendingPathComponent(self.filename)
return fileURL
}
} }
extension Game extension Game

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="9053" systemVersion="15A284" minimumToolsVersion="Xcode 7.0"> <model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="9057" systemVersion="15A284" minimumToolsVersion="Xcode 7.0">
<entity name="Game" representedClassName="Game" syncable="YES"> <entity name="Game" representedClassName="Game" syncable="YES">
<attribute name="artworkURL" optional="YES" attributeType="Transformable" syncable="YES"> <attribute name="artworkURL" optional="YES" attributeType="Transformable" syncable="YES">
<userInfo> <userInfo>
<entry key="attributeValueClassName" value="NSURL"/> <entry key="attributeValueClassName" value="NSURL"/>
</userInfo> </userInfo>
</attribute> </attribute>
<attribute name="fileURL" optional="YES" attributeType="Transformable" syncable="YES"> <attribute name="filename" optional="YES" attributeType="String" syncable="YES">
<userInfo> <userInfo>
<entry key="attributeValueClassName" value="NSURL"/> <entry key="attributeValueClassName" value="NSURL"/>
</userInfo> </userInfo>
@ -21,6 +21,6 @@
</uniquenessConstraints> </uniquenessConstraints>
</entity> </entity>
<elements> <elements>
<element name="Game" positionX="-198" positionY="9" width="128" height="118"/> <element name="Game" positionX="-198" positionY="9" width="128" height="120"/>
</elements> </elements>
</model> </model>