我以前使用initWithContentsOfURL将plist下载到NSDictionary中,但在同一线程上运行时会挂起UI,因此现在我已转移到NSURLConnection。问题是我不能再使用NSMutableData调用初始化NSDictionary的方法。将NSMutableData放入NSDictionary的最佳方法是什么?
发布于 2009-08-16 13:58:18
您需要的是NSPropertyListSerialization:
NSDictionary *myDict = [NSPropertyListSerialization propertyListFromData:myData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil];是最简单的选择。
发布于 2009-08-16 13:50:35
在不确切知道您要做什么的情况下,我将尝试这样做;即使它不起作用,我相信您也可以根据自己的目的对其进行调整。
NSString *s = [[NSString alloc] initWithBytes:[mutableData bytes] length:[mutableData length] encoding:NSUTF8StringEncoding];
NSString *path = NSTemporaryDirectory();
path = [path stringByAppendingPathComponent:@"tmpfile.txt"];
if ([s writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]) {
NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path];
}简单来说,就是根据给定的数据创建一个字符串,将其写出到临时文件中,然后将该临时文件加载到NSDictionary对象中。
代码远不完美(需要错误检查之类的东西)但这可能会让你起步。
注意:我编写Cocoa软件已经有几年了,但我从来没有接触过iPhone,所以这只是一个猜测。
发布于 2009-08-16 14:04:42
您的NSDictionary是否有其他需要保留的数据?
在connection:didReceiveResponse:方法(NSUrlConnection的委托)中,您可以将旧的NSDictionary复制到NSMutableDictionary中,然后将URL响应数据也插入其中。然后将NSMutableDictionary转换为新的NSDictionary。
https://stackoverflow.com/questions/1284295
复制相似问题