2012-02-16 95 views
0

我期待爲iOS創建基於導航的參考應用程序。在iOS上存儲不可變數據的最佳做法

我曾考慮通過以下方式來存儲數據:

硬編碼

plist文件

某種逗號分隔的文件

的數據結構,我將使用有一串字符串,一個數組和一個圖片的引用。

您認爲存儲這些數據的最佳方式是不進入CoreData?

謝謝

另外我不認爲這將超過500條目。

+1

使用屬性列表。這是沒有核心數據的最好方式。 – Moshe 2012-02-16 03:05:43

+0

除非CoreData有嚴格的要求,否則我強烈建議花幾個小時來學習它。它快速,簡單,並與CocoaTouch很好地整合 – MGA 2012-02-16 04:23:28

+0

我給CoreData一個看看,除了幹蘋果文檔,你建議的任何鏈接?謝謝 – 2012-02-16 04:44:12

回答

0

那麼,這不是任何情況下的「最佳實踐」問題。

我將使用的數據結構有一堆字符串,一個數組和一個圖片的引用。

您認爲存儲這些數據的最佳方式是不進入CoreData?

爲了您的需要,我建議你看看NSKeyedArchiver

NSString,NSArrayUIImage都知道如何編碼和解碼自己。只需使用NSKeyedArchiver。請注意,集合中的對象(例如NSArray)必須採用@protocol NSCoding

如果需要在Mac上打開此項,請使用適當的圖像文件格式表示(例如,PNG或JPEG)將UIImage轉換爲NSData,因爲UIImage不可用。

詳細:

硬編碼

這可能意味着一些事情。

plist文件

你跟大非的plist類型的工作。這意味着你需要不必要的轉換和從UIImage < - >NSData,這會增加很多開銷 - 內存,CPU和潛在的文件大小。所有這些類型都可以比自己的表現更好(或一樣好)。

某種逗號分隔的文件

圖像將不會允許這樣的事情發生(可靠)。

+0

當我說硬編碼時,我的意思是有一個可笑的長方法,可以創建我需要的所有數據對象,將它們添加到一個數組,並從該數組讀取UITableView。回顧一下,這可能是一個糟糕的主意。可能只是測試的好處。 – 2012-02-16 06:11:26

+0

但是我想對這些數據對象執行搜索。我看到CoreData提供了索引。這個視頻是一個很好的教程,可以找到應用程序將使用的sqlite文件的位置。我期望做的事情不需要用戶添加他們自己的條目,它將全部從文件中加載,它是一個帶有收藏夾和搜索的簡單參考應用程序。沒什麼特別的。只是不想放慢電話,這就是爲什麼林尋找最有效的方式來加載數據和搜索。 – 2012-02-16 06:16:14

+0

@M傑西啊,我明白了。這種方法相對比較脆弱 - 沒有版本支持意味着你永遠不能改變它,總是需要根據條目數來識別版本,同時在NSData中進行多次轉換。 – justin 2012-02-16 06:16:48