Cocoa:不构建字典的属性列表的元素计数?

标签 cocoa serialization count property-list

计算属性列表中条目数量的最佳方法是什么?

我当前从 plist 条目 (*) 构建字典,然后使用字典的计数:

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:myPlistPath];
NSDictionary *myPlistDict = (NSDictionary *) [NSPropertyListSerialization
                    propertyListFromData:plistXML
                        mutabilityOption:NSPropertyListMutableContainersAndLeaves
                                  format:&format
                        errorDescription:&errorDesc];
NSLog(@"There are %d entries in the plist.", [myPlistDict count]);

这让我觉得不必要的“沉重”,但我无法找到更有效的解决方案。有什么想法吗?


<小时/> (*) 以 10.5 为目标,因此使用已弃用的 +propertyListFromData:... 类方法。

最佳答案

好吧...如果您无论如何都要转换为 XML,则可以使用 NSXMLNode 的 childCount 方法。文档确实表明它比调用 [children count] 更有效,但 NSXMLNode 的创建可能会使这与 NSDictionary 方法一样糟糕(甚至更糟)。

你有个人资料吗?您正在处理特别大的 plist 吗?您是否经常请求此计数?我说:使用 NSDictionary,如果您经常请求它,则缓存该值,然后继续,除非速度慢得令人无法接受。 (是的,现在看起来很难看,但还有更大的事情需要担心。)

关于Cocoa:不构建字典的属性列表的元素计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299032/

相关文章:

c# - 快速简单的对象序列化

json - 如何通过FlexJson序列化模型中的 transient 字段?

python - Django REST 框架 - 序列化和反序列化原始类型列表

iphone - 将 NSString 转换为 NSInteger

iphone - ios - 查找一周内即将到来的生日

MySQL查询、计数问题

mysql - 计算表中的行数

mysql - 使用 count inside count 时将结果限制为 1 的 SQL 查询

objective-c - 我如何使用 [NSAlert beginSheetModalForWindow :completionhandler:] on older versions of OS X

objective-c - 如何将文件的内容存储到 NSString 中?