我创建了一个应用程序,数据存储在 plist 中。现在我可以通过哪些方式更新数据?也许如果我创建一个网页并从中检索我的数据而不是存储在 plist 中?或者有什么方法可以在我插入 iTunes 时更新我的数据?或者有什么其他建议?我想要实现的是一种在用户下载应用程序后更新我的数据的方法。
Best Answer-推荐答案 strong>
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [path objectAtIndex:0];
NSString *filePath = [dir stringByAppendingPathComponent"my.plist"];
NSMutableDictionary *localDictionary;
NSUrl *remoteUrl = [NSURL URLWithString"http://server.com/my.plist"];
NSMutableDictionary *remoteDictionary = [NSMutableDictionary dictionaryWithContentsOfURL:remoteUrl];
if(remoteDictionary != nil) {
[remoteDictionary writeToFile:filePath atomically:YES];
localDictionary = remoteDictionary;
}
else {
localDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
if(localDictionary == nil) localDictionary = [NSMutableDictionary dictionary];
}
这将尝试从 http://server.com/ 获取 my.plist 的副本,成功后会将其写入磁盘并指向 localDictionary 到它,出错时它会尝试从磁盘读取(例如,之前有连接时下载的),如果磁盘上没有文件,它将创建一个空的 NSMutableDictionary .无论哪种方式,localDictionary 最终都会指向一个 NSMutableDictionary 。
这很简单,每次运行代码时都会请求文件。你可以例如使用 NSFileModificationDate (由 NSFileManger attributesOfItemAtPath:error: 获得)和 NSDate 来确定是否需要更新。或者对于大文件版本控制也是有意义的,拥有一个包含大文件版本的小文件 - 从服务器获取小文件(例如使用 NSString ),检查缓存的版本文件是否包含较低的版本号,如果是这样,请获取大文件。它始终取决于内容的刷新频率。
查看完整文档:NSDictionary , NSString , NSFileManager , NSDate
关于ios - 如何在 iPhone 应用程序中更新数据,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/3581848/
|