SwiftData 错误 NSFileManager
SwiftData Error NSFileManager
我正在将 SwiftData 从 Swift 1.2 更新到 Swift 2,经过一些更改和更正后,我仍然遇到错误,我无法理解为什么会这样.
代码如下:
public static func saveUIImage(image: UIImage) -> String? {
let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath, withIntermediateDirectories: false, attributes: [:])
} catch {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = (imageDirPath as NSString).stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}
在 'do {' 行 Xcode 抛出以下错误:
Cannot invoke 'createDirectoryAtPath' with an argument list of type '(String, withIntermediateDirectories: Bool, attributes: _, error: _)'
关于为什么会发生这种情况的任何提示?这让我发疯。
谨致问候,并提前致谢。
;)
在我的Xcode7.2中没有:
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
所以我尝试了这段代码,它编译得很好:
public func saveUIImage(image: UIImage) -> String? {
let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = NSURL(string: docsPath)?.URLByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath!.absoluteString) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath!.absoluteString, withIntermediateDirectories: false, attributes: [:])
} catch {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = (imageDirPath!.absoluteString as NSString).stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}
Apple强烈推荐使用NSFileManager
和NSData
的URL相关API
public func saveUIImage(image: UIImage) -> String? {
let fileManager = NSFileManager.defaultManager()
let docsURL = try! fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let imageDirURL = docsURL.URLByAppendingPathComponent("SwiftDataImages")
if !fileManager.fileExistsAtPath(imageDirURL.path!) {
do {
try fileManager.createDirectoryAtURL(imageDirURL, withIntermediateDirectories: false, attributes:nil)
} catch let error as NSError{
print("Error creating SwiftData image folder", error)
return nil
}
}
let imageID = NSUUID().UUIDString
let imageURL = imageDirURL.URLByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToURL(imageURL, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}
我正在将 SwiftData 从 Swift 1.2 更新到 Swift 2,经过一些更改和更正后,我仍然遇到错误,我无法理解为什么会这样.
代码如下:
public static func saveUIImage(image: UIImage) -> String? {
let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath, withIntermediateDirectories: false, attributes: [:])
} catch {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = (imageDirPath as NSString).stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}
在 'do {' 行 Xcode 抛出以下错误:
Cannot invoke 'createDirectoryAtPath' with an argument list of type '(String, withIntermediateDirectories: Bool, attributes: _, error: _)'
关于为什么会发生这种情况的任何提示?这让我发疯。
谨致问候,并提前致谢。
;)
在我的Xcode7.2中没有:
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")
所以我尝试了这段代码,它编译得很好:
public func saveUIImage(image: UIImage) -> String? {
let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let imageDirPath = NSURL(string: docsPath)?.URLByAppendingPathComponent("SwiftDataImages")
if !NSFileManager.defaultManager().fileExistsAtPath(imageDirPath!.absoluteString) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(imageDirPath!.absoluteString, withIntermediateDirectories: false, attributes: [:])
} catch {
print("Error creating SwiftData image folder")
return nil
}
}
let imageID = NSUUID().UUIDString
let imagePath = (imageDirPath!.absoluteString as NSString).stringByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToFile(imagePath, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}
Apple强烈推荐使用NSFileManager
和NSData
public func saveUIImage(image: UIImage) -> String? {
let fileManager = NSFileManager.defaultManager()
let docsURL = try! fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let imageDirURL = docsURL.URLByAppendingPathComponent("SwiftDataImages")
if !fileManager.fileExistsAtPath(imageDirURL.path!) {
do {
try fileManager.createDirectoryAtURL(imageDirURL, withIntermediateDirectories: false, attributes:nil)
} catch let error as NSError{
print("Error creating SwiftData image folder", error)
return nil
}
}
let imageID = NSUUID().UUIDString
let imageURL = imageDirURL.URLByAppendingPathComponent(imageID)
let imageAsData = UIImagePNGRepresentation(image)
if !imageAsData!.writeToURL(imageURL, atomically: true) {
print("Error saving image")
return nil
}
return imageID
}