目标是拥有一个所有字符串长度为n的数组。
所以,目前我的代码所做的是将一个plist(只有250,000个字符串)读入一个数组,然后迭代数组,以便找出哪些是长度为n。当然,为了提高效率,我更喜欢能够从STRING BY STRING读取数据,因此,正如我正在阅读的那样,我可能在插入数组之前的长度。我刚刚开始学习objective-c,但我一直在努力寻求解决方案= P
编辑:我刚刚发现我可以找到更多文档输入属性列表而不是plist进入谷歌:)所以我可能能够自己解决这个问题答案 0 :(得分:3)
您可以将plist解析为树(NSMutableDictionary)。 Dict将包含字符串长度的键。
例如
NSMutableDictionary *result = [NSMutableDictionary dictionary];
for (NSString *str in [plistDict allObjects]) {
NSString *key = [NSString stringWithFormat:@"%d", [str length]];
NSMutableArray *array = [result objectForKey:key];
if (!array) {
array = [NSMutableArray array];
}
[array addObject:str];
[result setObject:array forKey:key];
}
比你可以访问所需字符串长度的数组
NSArray *string4Lenght = [result objectForKey:@"4"];
答案 1 :(得分:1)
Apple不提供用于逐步解析plist的API。
如果以XML格式存储plist,可以使用NSXMLParser
来解析它。模式非常简单,在Property List Programming Guide中有所描述。
如果要逐步解析二进制格式,则需要做更多工作。该格式没有官方文档。 Apple用于读取和编写格式的源代码是开源的(CFBinaryPList.c
),并且有一些有用的注释和实际代码。
如果您确实需要逐步进行,我建议使用XML路由。如果这样做,您可能希望子类NSInputStream
能够从gzip或bzip2文件中读取并动态解压缩。