这是一个典型的iOS问题 - 我应该在哪里保存数据?我现在编写了一些iOS应用程序,并使用了核心数据和plist文件。此外,我通常使用NSUserDefaults来保存用户设置,这实际上是一个带有键和值的小字典。在我(也许是不正确的)意见中,NSUserDefaults是存储应用程序全局所需信息的最简单方法。
我有从服务器下载的关系数据作为JSON对象,并且想知道我可以在多大程度上推送NSUserDefaults。我的数据大小可能只有几兆字节。我知道NSUserDefaults将按照我的尝试处理这个问题,但是,以这种方式保存数据是否存在任何风险,尽管它不一定存储大量数据?我的应用会被拒绝吗?可能存在内存和性能问题吗?
答案 0 :(得分:3)
你绝对应该使用其他机制。 NSUserDefaults
适用于较小的值,但对于较大的值,您可以使用文件系统。例如:
NSString* path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"Private Documents"];
path = [path stringByAppendingPathComponent:@"YourAppName"];
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
NSString *filePath = [self.basePath stringByAppendingPathComponent:@"filename.json"];
// Now save or load the data using NSData or an NSInputStream
NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:resource];
[inputStream open];
id object = [NSJSONSerialization JSONObjectWithStream:inputStream options:0 error:nil];
// you can write JSON objects in a similar way