【问题标题】:Saving Data With NSUserDefaults使用 NSUserDefaults 保存数据
【发布时间】:2013-11-13 16:29:24
【问题描述】:

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

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

【问题讨论】:

标签: ios nsuserdefaults


【解决方案1】:

您绝对应该使用其他机制。 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多