我正在使用NSJSONSerialization
从我的 Web 服务中解析一些 JSON,并且我想知道最有效的布局方式。
目前我以这种格式生成 JSON:
[
{"title":"title Val","description":"description val","appointmentDate":"2012-06-16T00:00:00"},
{"title":"title Val","description":"description val","appointmentDate":"2012-06-16T00:00:00"},
{"title":"title Val","description":"description val","appointmentDate":"2012-06-16T00:00:00"}
]
解析器构造一个NSArray
其中每个元素都是一个NSDictionary
包含约会详细信息(标题、描述、日期)的元素。
现在我的应用程序实际上需要在解析的 JSON 中搜索日期在某个时间间隔之间的约会,以便它可以根据某些用户操作显示它们。目前我只是扫描数组并检索任何符合条件的约会。这当然是 O(n)。当我想在特定字段上搜索时,我应该以不同的方式表示我的 JSON 吗?也许像这样?
{
"2012-06-16T00:00:00" : {"title":"title Val","description":"description val"},
"2012-06-18T00:00:00" : {"title":"title val","description":"description val"},
"2012-06-20T00:00:00" : {"title":"title val","description":"description val"},
}
这样,解析器将生成NSDictionary
每行的键是约会日期的位置。这样做是否更有效,或者我可以同样快速地对一个对象NSArray
执行二进制搜索?NSDictionary
如果搜索了数组,则有必要[row objectForKey:@"appointmentDate"]
在比较谓词中执行 a,这可能是一项昂贵的操作。