我使用NSJSONSerialization
来解析我的Web服务中的一些JSON,并且我想知道最有效的解决方法。为IOS解析器组织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
其中每行的关键是约会日期。这样做效率更高吗?或者我可以同样快速地在NSDictionary
对象的NSArray
上执行二分搜索吗?如果搜索数组,则有必要在比较谓词中执行[row objectForKey:@"appointmentDate"]
,这可能是一项昂贵的操作。
你是否认为将字符串转换为日期是值得的,还是应该按照原样比较它们?我使用的是yyyy-mm-dd,它毕竟是一种可排序的格式。 – Trent
字符串可能很好。真的,你想测试一个相当严重的数据集,并查看瓶颈的位置,因为它们并不总是你怀疑的地方。如果您发现您的代码花费大量时间解析和比较字符串,请切换到数字。奇怪的是,在64位Mac OS X上,NSNumbers比在iOS或32位Mac OS X上更快,因为它们大部分时间都将数字打包到对象指针中。 – EricS