通过下载iOS更新Plist文件

时间:2014-10-10 14:58:17

标签: ios xcode

我在Apple应用商店有一个测验应用。问题存储在Plist文件中。我想要做的是找到一种方法来通过下载新版本来更新Plist文件,而不是每当我有新的问题要添加时都不必提交更新

有谁知道一个可以帮助我的体面教程?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不确定教程,但实现你所描述的步骤非常简单:

  1. 创建对远程数据的网址请求
  2. 解析返回的数据
  3. 将解析后的数据写入新的本地plist
  4. 例如:

    // 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序列化到内存中以便使用它 - 您只需查询所需的特定问题。

    希望这有帮助。

相关问题