我创建了一个应用程序,数据存储在plist中。现在有什么方法可以更新数据?也许如果我创建一个网页并从中检索我的数据而不是存储在plist中?或者有什么方法可以在插入iTunes时更新我的数据?还是有其他建议?我想要实现的是用户下载应用程序后更新数据的方式。我如何更新iPhone应用程序中的数据
回答
由于必须将它们读回到内存中,进行更改并将它们写回到文件中,所以修整器不易修改。
编写plists可以查看NSDictionary或NSArray的writeToFile:atomically:
方法。记住你的plist基本上是一个由NSArrays,NSDictionaries,NSStrings和NSData组成的XML,你总是想写出根节点。
或者查找其他存储数据的方式:用户默认值或sqlite数据库。将数据存储在云中仅在某些情况下才有意义,例如您想要在不同设备之间共享数据或想要远程更新数据。如果可能,最好避免它。
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
嗨,my.plist是网页文件还是?对不起,我还是这个新手。服务器是免费使用的服务吗?感谢您的帮助 – Stefan 2010-09-02 06:03:03
my.plist只是一个plist文件(请参阅http://en.wikipedia.org/wiki/Property_list),对于少量数据的使用非常方便,因为您可以序列化并将其写入文件只有一个命令,并在一个命令中反转该过程。服务器是你必须得到你自己的东西,通常你也需要一个域(也许2个子域可以路由到不同的服务器,以防万一掉下来)。您可以使用FTP服务器来代替Web服务器(http)。如果你需要帮助,你应该问别的地方,因为托管不是编程。 – Thomas 2010-09-02 06:37:43
- 1. 如何更新我的iPhone应用程序上的数据库?
- 2. 如何更新我的android应用程序中的数据?
- 3. 我如何更新Android应用程序中的SQLite数据库?
- 4. 如何更新iPhone应用程序
- 5. iphone应用程序更新
- 6. 如何更新我的Flask应用程序的数据?
- 7. 如何创建链接来更新我的iPhone应用程序?
- 8. iphone:根据应用程序更新保留用户数据
- 9. iPhone应用程序更新(在sqlite的使用核心数据)
- 10. 如何更新我的应用程序/系统/应用程序
- 11. 更新iPhone应用程序删除旧版本的数据
- 12. 保存数据时,iPhone应用程序更新(MonoTouch的)
- 13. 使用核心数据更新Iphone应用程序内容
- 14. 如何自动更新应用程序购买/订阅自我更新iphone
- 15. iPhone应用程序和编程更新
- 16. 更新数据库的应用程序
- 17. 更新iphone应用程序的内容
- 18. iPhone应用程序的自动更新
- 19. iphone应用程序如何从互联网更新他们的SQLite数据?
- 20. 如何通过我的Xcode应用程序更新我的iPhone上的日历
- 21. 更新应用程序后的iPhone应用程序问题
- 22. 在iPhone上更新Sqlite数据库应用程序
- 23. 如何正确缓存/更新使用远程数据库的数据驱动的iPhone应用程序?
- 24. 如何在iPhone应用程序中加载更新
- 25. 如何在Xcode中启动主要iPhone应用程序更新
- 26. 更新iPhone应用程序到通用应用程序
- 27. 在我的iPhone应用程序中读取“设置”应用程序数据
- 28. 更新Android应用程序数据库
- 29. 更新应用程序迁移数据
- 30. 应用程序更新数据删除
最好是把它做好,而不是避开它。例如。在有连接和更新时更新数据,并在本地缓存数据。使用'NSMutableDictionary'将数据版本或更新日期存储在plist中。 – Thomas 2010-08-27 07:05:19
嗨,我会远程更新它。也许像这样,我可以发送警报告诉用户更新是否有效等。或者像YouTube应用程序一样,它如何存储/检索所有数据? – Stefan 2010-08-27 07:07:37
嗨托马斯我怎么能实现你建议的方法? – Stefan 2010-08-27 07:09:13