-1

英语不是我的母语;请原谅打字错误。

我已经阅读了类似的问题,但我找不到任何可以解决我的问题的东西..

我正在制作一个在表格视图中显示笔记列表的 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.

4

3 回答 3

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"]);

希望,它会帮助你。

谢谢。

于 2013-03-20T05:46:47.473 回答
0

on 方法的返回值NSPropertyListSerialization——从逻辑上讲——是你收到的属性列表的根对象。也是result一个NSDictionary(我什至无法想象你为什么认为它是一个数组......!?)。试试这个:

NSLog(@"%@", [result objectForKey:@"success"]);
于 2013-03-20T05:40:37.860 回答
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];
    }
于 2013-03-20T05:48:09.133 回答