iPhone从plist获取数据

时间:2013-03-20 05:35:26

标签: objective-c

英语不是我的母语;请原谅输入错误。

我已经阅读了类似的问题,但我找不到任何可以解决我问题的事情。

我正在制作一个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的价值。

3 个答案:

答案 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上方法的返回值 - 在逻辑上 - 是您收到的属性列表的根对象。所以resultNSDictionary(我甚至无法想象为什么你认为它是一个数组......!?)。试试这个:

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];
    }
相关问题