ios - SwiftData 错误 NSFileManager

标签 ios swift2 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

}

Xcode 在“do {”行抛出以下错误:

Cannot invoke 'createDirectoryAtPath' with an argument list of type '(String, withIntermediateDirectories: Bool, attributes: _, error: _)'

关于为什么会发生这种情况的任何提示?这让我发疯。

谨致问候,并提前致谢。

;)

最佳答案

在我的 Xcode 7.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
}

关于ios - SwiftData 错误 NSFileManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34471005/

相关文章:

cocoa - 包和 NSFileManager enumeratorAtURL :includingPropertiesForKeys:options:errorHandler:

objective-c - 当路径正确时,为什么 NSFIleManager -fileExistsAtPath 找不到现有文件?

ios - 是否可以在 UIProgressView 中添加多种颜色?

ios - 调用网络服务时显示 UIActivityIndi​​cator

ios - 从应用程序包复制文件时出错

swift - 在 Swift 中将变量声明为 Integer

ios - 如何删除 Firebase 存储文件?

ios - 配置文件不是 "iOS App Store"配置文件

ios - swift 函数返回对象或 nil