2012-02-05 81 views
0

我正試圖在我的應用程序中創建一個保存&加載模塊。所以用戶可以保存一些特定的信息,然後在任何時間點加載它。 我保存的是一個NSMutableStrings數組。我正在創建一個iPad應用程序,這樣保存的信息將以TableView的形式顯示在彈出窗口中。用字符串數組填充UITableView

所以,這是一個問題。我想用我保存的數組填充tableView,爲此我需要將我的數組存儲在某處。我是新來的普通的Objective-C和編程,並且希望你的建議是什麼是最好的方法。

我應該使用plist來存儲這些帶有Keys的數組,因此這些鍵將是用戶在保存時引入的名稱以及tableView單元的名稱?或者可能是一個簡單的NSMutableDictionary會做?

請指教。

回答

1

This answer可能會幫助你。使用核心數據在這裏可能是過度的,保存到plist是非常容易的。這是從鏈接的問題伯努瓦的回答是:

NSString *error; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
    NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"]; 
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj 
    format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; 
if(plistData) { 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error : %@",error); 
    [error release]; 
} 

其中rootObj是你想序列化,在這種情況下,您的陣列/字典的對象。


另外,如果你要經常你的應用程序的過程中被讀取/寫入這些數據,使用singleton它可以使一個巨大差的性能代價,而不是不斷地讀/自寫/到一個文件。您可以在應用程序啓動時將所有數據加載到單例中,並在applicationWillTerminate上保存。

要回答你的數組/字典問題,這取決於你如何獲得你的字符串以及你希望如何訂購它們。對數組排序非常簡單,您可以在this答案中看到。

+0

感謝您的回覆,Rickay。你一直很徹底。然而,我發現了一個教程,同樣的事情,我認爲它更適合我的需求:http://ipgames.wordpress.com/tutorials/writeread-data-to-plist-file/ 此外,感謝單身人士的建議,但現在我不太瞭解它是如何工作的以及如何使用它。如果我真的遇到問題,可能我會回到這個問題。 我會試試這個方法,如果有任何問題會回來 – 2012-02-05 19:23:51

+0

好的,祝你好運! – 2012-02-05 19:32:50

+0

謝謝,我需要它;)接近開發我的第一個應用程序的結尾,所以我非常興奮:D – 2012-02-05 19:34:40

0

謝謝,根據你的描述,我建議你看看使用Core Data進行數據存儲。

https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/cdprogrammingguide.html

除了存儲數據,蘋果公司已經延長了使用核心數據的各種各樣的巧妙方法,包括使用存儲的數據通過使用NSFetchedResultsController

https://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html來填充一個UITableViewController

就是這樣,給你一個閱讀,你應該很好地在你的路上。

+0

感謝您對gitJelly的建議,但是對於如此簡單的操作,核心數據不是太複雜嗎?我的意思是,我只是用字符串存儲一些數組。 – 2012-02-05 19:01:00