gpt4 book ai didi

ios - 将 NSDictionary 保存到文件是否有任何限制

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:20 25 4
gpt4 key购买 nike

我想用下面的方法保存NSDictionary

+ (void)writeDicToFile:(NSDictionary *)dic fileName:(NSString *)fileName
{
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
[dic writeToFile:filePath atomically:YES];
}

但是对于某些字典它有效而对于某些复杂的字典它不起作用。

帮帮我!

最佳答案

为了成功保存 NSDictionary,它持有的所有对象都必须符合 NSCoding protocol .

简而言之,这意味着您必须实现

- (void)encodeWithCoder:(NSCoder *)encoder

- (id)initWithCoder:(NSCoder *)decoder

对于您所有的自定义类。

这里有一个不错的教程:http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data

编辑:

一旦你编写了 NSCoder 方法,你就可以像这样保存数据:

NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:self];
[archiver finishEncoding];
[data writeToFile:file atomically:YES];

然后像这样从文件中初始化对象:

NSData *data = [[NSData alloc] initWithContentsOfFile:file];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
self = [unarchiver decodeObject];
[unarchiver finishDecoding];

你确实提到了 json 对象的问题:关于 json 对象的事情是首先你必须检查它的类型:它可以是 NSDictionaryNSArray -取决于输入和格式。

当您得到一个只有一个元素的数组时,就会出现常见问题——您要查找的字典。如果您的字典 {...} json 表示嵌入在 [] 中,就会发生这种情况。

关于ios - 将 NSDictionary 保存到文件是否有任何限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20742678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com