如何在设备离线时在iPhone上本地保存XML文件?

时间:2010-02-18 04:01:41

标签: iphone xml parsing save plist

我的应用正在访问远程XML文件中的数据。我没有接收和解析数据的问题。但是,我想获取最新的XML数据并将其存储在本地,以便在用户的互联网服务不可用时 - 使用先前加载的本地数据。

有一种简单的方法吗?或者我将不得不创建一个算法,在解析xml数据时创建一个plist?这似乎相当乏味......我想知道是否有更简单的方法来保存整个数据。

提前致谢!

1 个答案:

答案 0 :(得分:9)

我不知道您的XML数据在接收时的格式是什么,但是使用NSData可能会有所帮助,因为它具有非常易于使用的方法来从URL或路径名读取/写入数据

例如:

NSURL *url = [NSURL URLWithString:@"http://www.fubar.com/sample.xml"];
NSData *data = [NSData dataWithContentsOfURL:url];  // Load XML data from web

// construct path within our documents directory
NSString *applicationDocumentsDir = 
   [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"sample.xml"];

// write to file atomically (using temp file)
[data writeToFile:storePath atomically:TRUE];

您还可以轻松地将NSData对象转换为内存中的原始缓冲区(指针/长度),因此如果您的数据已经下载,您可以执行以下操作:

    NSData *data = [NSData dataWithBytes:ptr length:len];   // Load XML data from memory
    //  ... continue as above, to write the NSData object to file in Documents dir