将UIImage保存到文件而不是NSUserDefaults

时间:2015-05-12 13:32:48

标签: objective-c uiimage xcode6 nsuserdefaults

所以我有一个包含我想在本地存储的图像的数组,因为每次下载它们都会花费不必要的努力。我已经读过我不应该在NSUserDefaults中存储图像,这很好,但我不能在我的生活中找到任何关于如何将它作为文件存储在不改变的目录中的示例(iOS 8更改了每次构建的UUID,每次在Xcode中运行时都会创建一个新文件夹。

我一般有两个问题:

  1. 有人可以帮我翻译成ObjC吗?由于我没有足够的代表,所以我无法对帖子发表评论......这是我需要帮助的更快的部分。 Save images in NSUserDefaults?

  2. 我遇到的另一个问题是,无论是文件还是NSUserDefaults,都需要花费大量时间在本地保存数据。这里发生的是我的应用程序的用户在本地存储数据之前关闭应用程序。有什么方法可以防止这种情况吗?我可以添加一个ActivityIndi​​cator,但是我似乎无法找到任何回调,告诉我保存数据的过程何时完成。

  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

所以我设法解决了这个问题。问题是我只是混淆了路径。如果其他人想要从原始帖子中的链接将Swift转换为ObjC,那么它就是:

<强>写

NSString* relativePath = [NSString stringWithFormat:@"image_%d.jpg", 1];
NSString* realPath = [self documentsPathForFileName:relativePath];

// Write image data to user's folder
[self.ImageData writeToFile:realPath atomically:YES];

// Store path in NSUserDefaults
[defaults setObject:relativePath forKey:@"path"];

<强>读取

NSString *relativePath = [defaults objectForKey:@"path"];
NSString *realPath = [self documentsPathForFileName:relativePath];
self.ImageData = [NSData dataWithContentsOfFile:realPath];