2012-02-05 82 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