2013-03-22 37 views
0

我有一個iphone應用程序,它有一個大的(6-7MB)keyvalue文件,我希望避免加載到內存中。它很少被使用,並且咀嚼那麼多的RAM似乎是不必要的。在iphone應用程序中查找表的最佳方式,無需將其加載到內存中

現在它的格式爲

KEY VALUE 

與行一個純文本文件,但我很高興來存儲但它的效果最好。

這是最好的方法是什麼? SQLite是一個選項,但這似乎相當重量級的解決方案。我聽說coredata是一個很好的SQLite接口,但在我看來,這仍然會涉及到將整個文件作爲nsdictaionary加載到內存中。

回答

2

首先,SQLite不是「重量級」解決方案。它的內存要求非常低,性能也很好。如果你使用SQLite,你可能會需要一個像FMDB或PLDatabase這樣的包裝器,以便在Objective-C中使用它。

接下來,核心數據不是SQLite的包裝。它在內部使用 SQLite,但這是Core Data API中未公開的實現細節。核心數據可以在這種情況下工作,但是如果你用SQL風格的術語來想它,那麼我保證你會把它搞砸。

如果您只是很少使用表格,最簡單的方法是將其另存爲JSON或作爲屬性列表,並按需閱讀整個內容。只要您在完成時仔細卸載它,並且您尚未推動內存限制,我就不會擔心它。如果你可能更經常地到達需要的地方,可以考慮使用SQLite或Core Data--或者讓你查找你需要的值,而不需要把整個東西加載到內存中。

1

如何搜索將所有密鑰加載到內存中的密鑰?

您可以實現自己的索引方案,或者只是使用SQLite(由於其他應用程序或服務,其代碼可能已經存在於內存中)。

0

六七MB並不大。因此,您可以將它加載到字典中,然後在通過時確保它被刪除/取消鏈接。或者,您也可以編寫自己的查詢並自己讀取文件行以掃描密鑰。但6-7 MB並不大。

如果您控制了文件內容,只需使用現有的Apple框架將其編寫爲plist,然後將plist作爲字典讀取並進行查詢。

相關問題