我使用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