4

这是一个经典的 iOS 问题——我应该在哪里保存我的数据?我现在已经编写了一些 iOS 应用程序,并且使用了核心数据以及 plist 文件。此外,我通常使用 NSUserDefaults 来保存用户设置,它本质上是一个包含键和值的小字典。在我(可能不正确)看来,NSUserDefaults 是在应用程序中存储全局所需信息的最简单方法。

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

4

1 回答 1

3

You should definitely use other mechanism. NSUserDefaults is ok for small values, but for larger ones you could use the file system. For example:

    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
于 2013-11-02T18:21:51.850 回答