我創建了一個應用程序,數據存儲在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. 每天更新iPhone應用程序中的數據?
- 7. 如何創建鏈接來更新我的iPhone應用程序?
- 8. 如何更新我的舊應用程序到iPhone 5?
- 9. 我如何更改我的數據庫數據爲新的Rails應用程序
- 10. iphone:根據應用程序更新保留用戶數據
- 11. 如何更新我的應用程序
- 12. iPhone應用程序更新(在sqlite的使用核心數據)
- 13. 如何更新應用程序的數據而無需更新應用程序版本? (android應用程序)
- 14. 如何更新我的應用程序/系統/應用程序
- 15. 爲什麼iPhone應用程序更新會中斷我的應用程序?
- 16. iphone應用程序 - 使用新項目更新應用程序
- 17. 更新iPhone應用程序刪除舊版本的數據
- 18. 保存數據時,iPhone應用程序更新(MonoTouch的)
- 19. 基於核心數據的iPhone應用程序更新
- 20. 如何更新iPhone應用程序中的新聞提要而不更新應用程序?
- 21. 使用核心數據更新Iphone應用程序內容
- 22. 如何自動更新應用程序購買/訂閱自我更新iphone
- 23. iPhone應用程序和編程更新
- 24. 更新一些數據後如何刷新應用程序中的數據?
- 25. iPhone應用程序的自動更新
- 26. iPhone應用程序的自動更新
- 27. 更新現有的iPhone應用程序
- 28. 更新iphone應用程序的內容
- 29. iphone應用程序如何從互聯網更新他們的SQLite數據?
- 30. 如何通過我的Xcode應用程序更新我的iPhone上的日曆
最好是把它做好,而不是避開它。例如。在有連接和更新時更新數據,並在本地緩存數據。使用'NSMutableDictionary'將數據版本或更新日期存儲在plist中。 – Thomas 2010-08-27 07:05:19
嗨,我會遠程更新它。也許像這樣,我可以發送警報告訴用戶更新是否有效等。或者像YouTube應用程序一樣,它如何存儲/檢索所有數據? – Stefan 2010-08-27 07:07:37
嗨托馬斯我怎麼能實現你建議的方法? – Stefan 2010-08-27 07:09:13