【问题标题】:Using iOS SDK to create a plist at runtime?使用 iOS SDK 在运行时创建 plist?
【发布时间】:2011-12-09 14:58:44
【问题描述】:

我是 iPhone 开发的新手。我想知道是否有任何示例 Objective-C 代码可以在运行时通过从网络服务器获取数据来创建 plist,并且我想知道数据的格式应该是什么,以便我可以在运行时轻松创建 plist。

【问题讨论】:

  • plist是一个xml文件,可以用任何文本编辑器查看

标签: iphone objective-c ios plist


【解决方案1】:

NSDictionary很简单:

#define DOCUMENTS_PATH [NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES) objectAtIndex:0]

NSDictionary *myDictionary = [self parseWebResult];

// note that myDictionary must only contain values of string, 
// int, bool, array (once again containing only the same types), 
// and other primitive types (I believe NSDates are valid too).
[myDictionary writeToFile:[DOCUMENTS_PATH stringByAppendingPathComponent:@"myDict.plist"] atomically:YES];

// reading in the dictionary
myDictionary = [NSDictionary dictionaryWithContentsOfFile:[DOCUMENTS_PATH stringByAppendingPathComponent:@"myDict.plist"]];

【讨论】:

    【解决方案2】:

    Plist 文件主要用于 Mac OS X 以键/值方式存储序列化对象。有多种属性列表文件; ASCII、XML 和二进制。所以在您的情况下,您的服务器应该以 xml 格式发送数据。从服务器接收数据后,您可以在运行时生成 plist。您可以使用以下代码将数据写入 .plist 文件。

    - (void)writeToPlist{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"WebData.plist"];
    NSArray *dataToSave = [dataToSave writeToFile:filePath atomically:YES];
    }
    

    请参考this 和服务器端的这些链接还有link1 link2 link3 link4

    【讨论】:

    • 虽然理论上这可以回答问题,但我们希望您在回答中包含链接文章的基本部分,并提供links for reference。如果不这样做,答案就会面临链接失效的风险。
    【解决方案3】:
    // Get the full path of file in NSDocuments 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyData.plist"];
    
    // Save data to file
    NSArray *dataToSave = /* put data in it */;
    [dataToSave writeToFile:filePath atomically:YES];
    

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      相关资源
      最近更新 更多