我是iOS的新手,我能够将NSDictionary对象写入文件,如下例
{
"msg":"Hello",
"from":"X",
"date":"12/1/2014"
}
{
"msg":"new to IOS",
"from":"home",
"date":"23/2/2014"
}
我知道这是一个我需要使用NSArray的对象数组,但我已经阻止了,因为我的一个NSDictionary对象消耗了大量内存,我想一次序列化和反序列化一个对象。我遇到SBJson4StreamParser内部执行此类功能,但我遇到了实现问题,我也尝试使用原生NSJsonSeriailzation但是这些类型的解析选项有限,任何人都可以帮忙解决这个问题。
答案 0 :(得分:0)
我建议另一种可能性:让我们假设你的NSArray是字典对象的消息,然后你可以序列化它:
[[NSUserDefaults standardUserDefaults] setObject:self.messages forKey:@"com.yourdomain.messages"];
[[NSUserDefaults standardUserDefaults] synchronize];
和反序列化
self.messages = [[NSUserDefaults standardUserDefaults] arrayForKey:@"com.yourdomain.messages"];
参考文献:Apple doc
我希望这可以帮到你。
答案 1 :(得分:0)
SBJson可以在这里帮助,通过使用NSInputStream以chunkwise方式读取文件并将其提供给解析器,如下所示:
id parser = [SBJson4Parser multiRootParserWithBlock:block
errorHandler:eh];
id is = [NSInputStream inputStreamWithFileAtPath:filePath];
[is open];
// Buffer to read from the input stream
uint8_t buf[1024];
// Read from input stream until empty, or an error;
// better error handling is left as an exercise for the reader
while (0 > [is read:buffer maxLength: sizeof buffer]) {
SBJson4ParserStatus status = [parser parse:data];
NSLog(@"Status: %u",status);
// Handle parser errors here
}
[is close];
请注意,您仍然需要阅读并解析整个文件以保证 你找到一个特定的条目。 没有办法只处理一个 以这种方式具体进入。