【发布时间】:2011-12-09 14:58:44
【问题描述】:
我是 iPhone 开发的新手。我想知道是否有任何示例 Objective-C 代码可以在运行时通过从网络服务器获取数据来创建 plist,并且我想知道数据的格式应该是什么,以便我可以在运行时轻松创建 plist。
【问题讨论】:
-
plist是一个xml文件,可以用任何文本编辑器查看
标签: iphone objective-c ios plist
我是 iPhone 开发的新手。我想知道是否有任何示例 Objective-C 代码可以在运行时通过从网络服务器获取数据来创建 plist,并且我想知道数据的格式应该是什么,以便我可以在运行时轻松创建 plist。
【问题讨论】:
标签: iphone objective-c ios plist
用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"]];
【讨论】:
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];
}
【讨论】:
// 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];
【讨论】: