2015-05-12 54 views
0

所以我有一个图像阵列,我想在本地存储,因为每次下载它们都会花费不必要的精力。我读过,我不应该在NSUserDefaults中存储图像,这很好,但我不能在我的生活中找到任何有关如何将它作为文件存储在不会更改的目录中的示例(iOS 8更改了UUID与每个创建一个新的文件夹,每次我在Xcode中运行它)。保存UIImage文件,而不是NSUserDefaults

我通常这里有两个问题:

  1. 可能有人帮我翻译成ObjC吗?我无法评论这篇文章,因为我没有足够的代表......这是我需要帮助的帖子后面的一个快速部分。 Save images in NSUserDefaults?

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

谢谢!

+0

只是不存储完整路径的图像,并建立每次你想要访问图像文档目录的路径。这样,如果应用程序的UDID改变了,它不会影响你的路径。 – rckoenes

回答

1

所以我设法解决它。问题是我只是混淆了路径。如果任何人在这里想从斯威夫特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];