首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftData误差NSFileManager

SwiftData误差NSFileManager
EN

Stack Overflow用户
提问于 2015-12-26 11:41:48
回答 2查看 131关注 0票数 0

我正在将SwiftData从SWIFT1.2更新到Swift 2,经过一些更改和修正后,我仍然有一个错误,我无法理解为什么会发生这种错误。

守则如下:

代码语言:javascript
复制
    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抛出以下错误:

不能使用类型的参数列表调用“createDirectoryAtPath”(String,withIntermediateDirectories: Bool,attributes:_,error:_)

知道为什么会发生这种事吗?快把我逼疯了。

致以良好的问候,并提前表示感谢。

;)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-26 11:49:11

在我的Xcode 7.2中没有:

代码语言:javascript
复制
let imageDirPath = docsPath.stringByAppendingPathComponent("SwiftDataImages")

所以我尝试了这段代码,它编译得很好:

代码语言:javascript
复制
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
}
票数 1
EN

Stack Overflow用户

发布于 2015-12-26 12:03:03

苹果强烈建议使用NSFileManagerNSData的URL相关API

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34471005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档