英语不是我的母语;请原谅输入错误。
我已经阅读了类似的问题,但我找不到任何可以解决我问题的事情。
我正在制作一个iPhone应用程序,在桌面视图中显示笔记列表,用户可以添加和删除笔记。
当我向服务器添加新笔记时,我得到一个如下所示的plist:
<plist>
<dict>
<key>success</key><true />
<key>note</key><string>new note</string>
</dict>
</plist>
用户点击add
按钮后,我请求连接到服务器,我这样做,
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[resultData appendData:data];
}
然后
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSError *sendError;
NSArray *result = [NSPropertyListSerialization propertyListWithData:resultData options: NSPropertyListMutableContainersAndLeaves format:NULL error:&sendError];
if([result count] > 0){
for(NSDictionary *dict in result){
for(NSDictionary *dict in result){
// This gives me an error "objectForKey: unrecognized selector to instance"
NSLog(@"%@", [dict objectForKey:@"success"]);
}
}
}
}
我认为dict
可能不是字典,所以我尝试了NSLog(@"%@", dict);
,它只显示success
。但是,我仍然不知道如何获得success
的价值。
答案 0 :(得分:1)
试试这个::
.h文件
@property (nonatomic,retain) NSDictionary *dict;
.m文件
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *rootPath;
rootPath = [[NSBundle mainBundle] pathForResource:@"FILE_NAME"
ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:rootPath];
dict = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
//NSLog(@"PLIST retrive:%@",plistXML);
if (!dictLang) {
NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
}
获取价值::
NSLog(@" Success :: %@", [dict objectForKey:@"success"]);
希望,它会帮助你。
感谢。
答案 1 :(得分:0)
NSPropertyListSerialization
上方法的返回值 - 在逻辑上 - 是您收到的属性列表的根对象。所以result
是NSDictionary
(我甚至无法想象为什么你认为它是一个数组......!?)。试试这个:
NSLog(@"%@", [result objectForKey:@"success"]);
答案 2 :(得分:0)
if ([[NSPropertyListSerialization propertyListWithData:resultData options: NSPropertyListMutableContainersAndLeaves format:NULL error:nil] isKindOfClass:[NSDictionary class]])
{
NSMutableDictionary *tempDicts = [NSPropertyListSerialization propertyListWithData:nil options: NSPropertyListMutableContainersAndLeaves format:NULL error:nil];
}
else if ([[NSPropertyListSerialization propertyListWithData:resultData options: NSPropertyListMutableContainersAndLeaves format:NULL error:nil] isKindOfClass:[NSArray class]])
{
NSMutableArray *tempDicts = [NSPropertyListSerialization propertyListWithData:nil options: NSPropertyListMutableContainersAndLeaves format:NULL error:nil];
}