我在蘋果應用程序商店有一個測驗應用程序。問題存儲在Plist文件中。我正在尋找的方法是通過下載新版本來更新Plist文件,而不必每次有新的問題時都要提交更新通過下載更新Plist文件iOS
有沒有人知道一個體面的教程可以幫助我?
非常感謝。
我在蘋果應用程序商店有一個測驗應用程序。問題存儲在Plist文件中。我正在尋找的方法是通過下載新版本來更新Plist文件,而不必每次有新的問題時都要提交更新通過下載更新Plist文件iOS
有沒有人知道一個體面的教程可以幫助我?
非常感謝。
我不知道有關的教程,但步驟來實現你的描述非常簡單:
如:
// Create a NSURL to your data
NSString *dataPath = @"www.mydata.com/path";
NSURL *dataURL = [NSURL URLWithString:dataPath];
// Create an asycnhronous request along with a block to be executed when complete
[NSURLConnection sendAsynchronousRequest:[[NSURLRequest alloc] initWithURL:dataURL]
queue:[[NSOperationQueue alloc] init]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if (error) {
NSLog(@"%@", error.localizedDescription);
// Handle the request error
}
else {
// We have some data, now we need to serialize it so that it's usable
NSError *serializationError;
NSDictionary *serializedDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&serializationError];
if (serializationError) {
NSLog(@"%@", serializationError.localizedDescription);
// Handle the serialization error
}
else {
// We have a serialized NSDictionary, now we just want to write it
// First we create the path to write it to, eg. uers documents directory
NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
// Then write it
BOOL success = [serializedDictionary writeToFile:documentsDirectory.path atomically:YES];
if (!success) {
NSLog(@"Error writing file");
}
}
}
}];
注意:您可能想考慮將數據存儲在遠程數據庫中,如Parse。通過這種方式,您可以查詢新問題,只下載這些問題,以免使用不必要的帶寬。您也可以考慮使用Core Data
來維護您的本地數據,而不是將它寫入plist。主要優點是您無需將整個plist串行化爲內存以便使用它 - 您只需查詢所需的特定問題即可。
希望這會有所幫助。
我已經使用Parse推送通知,但不知道它也可以這樣做。關於退出Plist的唯一問題是已經存在並遷移它的3000個問題。 – nobbsy 2014-10-10 16:27:44
數據驅動應用程序的一個常見做法是使用plist作爲起點,並將其輸入到「核心數據」中。然後,您可以合併定期的服務器查詢以查看是否有新內容,如果有,使用新的遠程數據更新'Core Data' – chrysAllwood 2014-10-10 16:32:48
因此,示例流程可能是: - 啓動時檢查是否已填充「Core Data」 (例如運行一個沒有謂詞的查詢) - 如果它返回0個對象,那麼這是第一次啓動,所以序列化你的plist,然後迭代每個問題,爲每個問題插入一個新的NSManagedObject - 否則,你已經完成了這項工作 - 「核心數據」很好用 - 在上次更新後更新的所有問題的查詢解析(通過存儲在NSUserDefaults中的'NSDate'記錄此問題) - 如果有任何問題結果,然後爲它們創建新的NSManagedObjects或更新當前的 – chrysAllwood 2014-10-10 16:42:30
[DOWNLOADFile](http://stackoverflow.com/questions/19101179/download-plist-from-server)___ [deletionFile](http://stackoverflow.com/questions/15505529/delete-file-obj- c) – 2014-10-10 15:50:42