解析xml并保存数据

时间:2012-08-24 08:38:42

标签: objective-c ios xml sqlite

我有一个问题,无法真正找到答案。

我有一个应用程序从xml文件下载所有内容。不幸的是,当用户没有互联网连接时,该应用程序是无用的。我希望我的应用程序在没有互联网的情况下也很有用。

我现在要做的是检查是否有互联网,如果是,请下载并解析xml并检索所有图像和文本。接下来,我想保存这个,并且仅在用户请求时刷新数据。如果没有互联网,应用程序应直接转到其保存的xml文件及其保存的图像等。

我需要知道如何保存图像和文字,这是否允许?我在某处读到了如何将图像保存到文件夹中,但我可以说会有大约300张图像,这不会是一个大混乱吗?这甚至是允许的吗?

此外,如何保存文字?是否可以结合使用sqlite和保存到文档文件夹?

Prastow

1 个答案:

答案 0 :(得分:0)

您可以将内容存储在plist而不是xml

将值设置为plist

 NSData * data = [NSKeyedArchiver archivedDataWithRootObject:YourDataArray];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];

    NSString *Path =[NSString stringWithFormat:@"%@/%@.plist",docDir,@"Content"];
    NSLog(@"%@",Path);
    BOOL didWriteSuccessfull = [data writeToFile:Path atomically:YES];
    if (didWriteSuccessfull) {
        NSLog(@"store succsessfully");
    }
    else {
        NSLog(@"no");
    }

从plist获取价值

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];

NSString *Path =[NSString stringWithFormat:@"%@/%@.plist",docDir,@"Content"];


if ([[NSFileManager defaultManager] fileExistsAtPath:Path])
{

    NewsToDisplay=[[NSArray alloc]initWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:[NSData dataWithContentsOfFile:Path]]];

}