我是iOS新手。我的要求是從應用程序內收集幾個錯誤字符串,並定期將它們發佈到我的Web服務。每個錯誤都是一個簡單的NSString〜100個字符長。我可能會在帖子之間累積多達1000條錯誤記錄。實際的帖子將在後臺線程上完成,但錯誤日誌的集合和持久性將在主線程上完成。我試圖決定之間的持久性以下方法之一:
1)屬性列表序列化(我的日誌記錄將是NSStrings的NSArray)
2)NSUserDefaults(我的NSArray將是NSUserDefaults中某些鍵的值對象)
3)核心數據(但只有一個NSManagedObject的日誌,只有一個屬性內部的日誌消息字符串)iOS中的持久性:屬性列表序列化與NSUserDefaults與核心數據
請注意,我說「日誌」,但我正在手動執行所有日誌記錄工作。 (是否有其他選擇?)
對我來說,一個重要的因素是增量式地將日誌記錄保留在磁盤上。換句話說,如果我已經堅持了500條日誌記錄,並且501st出現了,爲了效率的原因,我不想重新保留500 + 1條日誌記錄。 看來,使用選項(1)和(2)我不能逐步堅持的東西。我想我必須每次重寫blob。我仍在學習選項(3)。 只是想在此得到專家意見的:)
日誌屬於應用程序的行爲而不是用戶,例如,應用程序無法加載某些媒體。我不清楚日誌記錄過程,我打算在內存中收集NSArray中的錯誤字符串,以一定的時間間隔持續它們,然後稍後發佈它們。我不確定是否有任何非手動選項可以記錄..你能提供建議嗎? –
查看我更新的答案。 – sosborn
謝謝sosborn。但我還有一個要求,在發佈之間,我必須定期將日誌記錄保存到文件中,以防萬一應用程序崩潰並丟失大量記錄。比方說,在每50條記錄之後,我將它們保存在文件log.txt中。對於下一個50,我將不得不刪除該文件並重新保留100條記錄等等,直到最多1000條記錄。也許我只是在這裏尋找方法來逐步堅持東西。它看起來像核心數據會允許的,但對於這種用例,我認爲平面文件足夠好。我會接受這個答案。謝謝。 –