【问题标题】:Saving and loading image paths by NSUserdefaults通过 NSUserdefaults 保存和加载图像路径
【发布时间】:2015-02-12 04:14:33
【问题描述】:

我的应用程序允许用户从他们的照片库中选择一个徽标并将其保存到他们的文档目录中,如下所示:

 var fileName:String = "logo.png"

        var arrayPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString

        var pngFileName = arrayPaths.stringByAppendingPathComponent(fileName)

       UIImagePNGRepresentation(pickedImage).writeToFile(pngFileName, atomically:true)

        NSUserDefaults.standardUserDefaults().setObject(fileName, forKey: "pngFileName")
        NSUserDefaults.standardUserDefaults().synchronize()

然后我想在另一个视图控制器中使用该图像,但我不知道如何从他们的用户默认值中访问该图像,然后在当前视图控制器中使用。

【问题讨论】:

    标签: swift uiimage nsuserdefaults nsdocumentdirectory


    【解决方案1】:

    您有存储在用户默认值中的文件名,您可以以通常的方式找到应用程序文档目录 - 将两者结合起来,您就有了您的 url。这样,您可以显示图像。

    let path = NSSearchPathForDirectoriesInDomains(
           .DocumentDirectory, .UserDomainMask, true)[0] as NSString
    let fileName = NSUserDefaults.standardUserDefaults()
                   .stringForKey("pngFileName") ?? defaultName
    let imagePath = path.stringByAppendingPathComponent(fileName)!
    let image = UIImage(contentsOfFile: imagePath )
    
    // display the image
    someImageView.image = image
    

    【讨论】:

    • 当我运行你的代码时,我得到一个错误 NSUserDefaults does not have a member named 'stringForKey' - 这很奇怪,因为文档说明它确实如此。
    • 刚刚在 Playground 中测试:按预期工作。确保在类名后使用standardUserDefaults()。我通过添加() 更正了帖子。
    • 你真的应该有条件地解开从 NSUserDefaults 获取文件名的结果。
    • @Abizern 很公平 - 我添加了一个有条件的默认名称。
    • 花了几个小时试图将它与我存储的文件名联系起来...使用了这个,哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇
    猜你喜欢
    • 2015-11-10
    • 2013-05-28
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多