1

我是 iOS 新手,我想将 NSArray 中的值存储到辅助存储中,以便我以后可以访问它,该数组是来自 Web 服务的大响应,我想解析并显示它,解析数组不是有效的并存储在sqlite DB中,我想要另一种方法来保存该数组,可能在文本文件中,这样我就无法从文本文件中检索数据并通过我的解析函数解析它。我们能做到吗?

请给我建议

提前致谢 !

4

3 回答 3

2

要将数组保存到文本文件,您可以使用该方法– writeToFile:atomically:,有关更多信息,请参阅该函数的文档

于 2013-01-09T14:50:58.620 回答
1

要从 NSUserDefaults 中检索“yourArray”.. 您可以在控制器中编写:

-(id) initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if (self) {

        yourArray = [[NSMutableArray alloc] init];
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

        if (! [defaults objectForKey: [NSString stringWithFormat:@"sample"]])
        {
            //if nothing saved
            //... do whatever you want

            //Use this array if there is nothing saved
            NSLog(@"no saved array");
            NSArray *modelArray1 = @[@"New York", @"London", @"Paris"];
            yourArray=[modelArray1 mutableCopy];
        }
        else{
            NSLog(@"existing array");
            NSData *myDecodedObject = [defaults objectForKey: [NSString stringWithFormat:@"sample"]];
            yourArray =[NSKeyedUnarchiver unarchiveObjectWithData: myDecodedObject];
            NSLog(@"decode array init=%u", yourArray.count);
        }
            }
    return self;
}

为了节省..

-(void)saving
{
    NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
    NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:yourArray];
    [userDefault setObject:myEncodedObject forKey:[NSString stringWithFormat:@"sample"]];
    [userDefault synchronize];

}
于 2013-01-10T13:16:59.980 回答
0

最好的选择是[NSArray writeToFile:atomically:]数组是否包含简单对象。要获取数组,请使用 NSArray 的arrayWithContentsOfFile:(创建并返回一个数组,其中包含由给定路径指定的文件的内容。+ (id)arrayWithContentsOfFile:(NSString *)aPath)

于 2013-01-09T14:49:49.870 回答