如何将我的数据保存在array-iphone sdk中

时间:2011-09-29 08:48:03

标签: iphone database nsmutablearray

我正在尝试创建一个应用程序,并且我正在从net接收一些内容并加载到数组中,如果我退出并再次运行应用程序,我将丢失数据。如何将数据存储在应用程序本身中。我应该使用某种数据库吗?如果是这样,我该如何实现呢?我只需要存储一些字符串变量。

修改 我的应用程序是基于tabbar的应用程序,并有两个选项卡。将阵列加载到一个选项卡中,并将该阵列加载到另一个VC中的表中。一旦我加载数组并移动到第二个选项卡,表格就会加载数组。如果我返回并添加更多值,然后如果我检查,添加的数据不会显示在表中。而且,当我退出应用程序时,表会丢失所有值,我需要保留表中的值,即使在我退出应用程序之后。我怎样才能做到这一点? 这是我的代码: 在viewdidload中:

 NSUserDefaults *simplePlistDb = [NSUserDefaults standardUserDefaults];
        [simplePlistDb setBool:YES forKey:@"isItWorking"];
        [simplePlistDb setObject:alertList forKey:@"myArray"];
        [simplePlistDb synchronize];

in cellforrowatindexpath: -

NSUserDefaults *simplePlistDb = [NSUserDefaults standardUserDefaults];
    BOOL flag = [simplePlistDb boolForKey:@"isItWorking"];
    if (flag)
    {
        NSArray *myArray = [simplePlistDb objectForKey:@"myArray"];
        for (NSString *str in myArray){
            NSLog(@"Str:%@", str);
            [loadArray addObject:str];
        }
        cell.textLabel.text = [loadArray objectAtIndex:indexPath.row];
    }

谢谢。

3 个答案:

答案 0 :(得分:2)

如果要将大量数据保存到iPhone,您需要查看Core Data。但是,如果没有,您只需将数组中的项目加载到plist中,然后在启动时从那里加载它们。

Plist写作:How to create a new custom property list in iPhone Applications

CoreData:http://www.raywenderlich.com/934/core-data-tutorial-getting-started

编辑--->

正如Nekto所说,你也可以使用NSUserDefaults,但我建议主要使用NSUserDefaults来处理简单的NSStrings和整数。

答案 1 :(得分:1)

答案 2 :(得分:1)

您可以使用NSUserDefaults存储数据,直到您的应用安装到设备中。

如何在NSuserDefaults中编写:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"yourObject1" forKey:@"correspopndingKey1"];
[defaults setObject:@"yourObject2" forKey:@"correspopndingKey2"];
[defaults synchronize];

如何从NSuserDefaults中读取:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *temp1 = [defaults objectForKey:@"correspopndingKey1"];
NSString *temp2 = [defaults objectForKey:@"correspopndingKey2"];

您可以以类似的方式存储NSArray。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:objArray forKey:@"correspopndingKey"];
[defaults synchronize];