使用NSUserDefaults保存数据

时间:2013-11-02 16:45:01

标签: ios nsuserdefaults

这是一个典型的iOS问题 - 我应该在哪里保存数据?我现在编写了一些iOS应用程序,并使用了核心数据和plist文件。此外,我通常使用NSUserDefaults来保存用户设置,这实际上是一个带有键和值的小字典。在我(也许是不正确的)意见中,NSUserDefaults是存储应用程序全局所需信息的最简单方法。

我有从服务器下载的关系数据作为JSON对象,并且想知道我可以在多大程度上推送NSUserDefaults。我的数据大小可能只有几兆字节。我知道NSUserDefaults将按照我的尝试处理这个问题,但是,以这种方式保存数据是否存在任何风险,尽管它不一定存储大量数据?我的应用会被拒绝吗?可能存在内存和性能问题吗?

1 个答案:

答案 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
相关问题