无法从iOS中创建的plist文件中获取值

时间:2013-03-28 14:54:16

标签: iphone ios objective-c xcode plist

我是ios开发中的新手,我无法使用以前的方法读取我创建的plist中的值。 read方法返回(null)(null)。谁能帮帮我?

这里我创建了一个plist:

- (void)createAppPlist {

    plistPath = [self getDataFileDir];
    // Create the data structure

    rootElement = [NSMutableDictionary dictionaryWithCapacity:3];
    NSError *err;
    name = @"North America";
    country = @"United States";

    continentElement = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:name, country, nil] forKeys:[NSArray arrayWithObjects:@"Name", @"Country", nil]];

    [rootElement setObject:continentElement forKey:@"Continent"];

    //Create plist file and serialize XML

    data = [NSPropertyListSerialization dataWithPropertyList:rootElement format:NSPropertyListXMLFormat_v1_0 options:0 error:&err];
    if(data)
    {
        [data writeToFile:plistPath atomically:YES];
    } else {
        NSLog(@"An error has occures %@", err);
    }

    NSLog(@"%@", rootElement);
    NSLog(@"%@", data);

}

在这里,我正试图获得价值......

-(void)readAppPlist
{
    plistPath = [self getDataFileDir];
    NSMutableDictionary *propertyDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    name = [propertyDict objectForKey:@"Name"];
    country = [propertyDict objectForKey:@"Country"];

    NSLog(@"%@     %@", name, country);
}

1 个答案:

答案 0 :(得分:1)

使用以下代码在文档目录中创建和读取Plist,您可以根据需要更改存储路径

- (void)createAppPlist {

//    plistPath = [self getDataFileDir];
    // Create the data structure

    NSMutableDictionary *rootElement = [NSMutableDictionary dictionaryWithCapacity:3];

    NSString *name = @"North America";
    NSString *country = @"United States";


    NSMutableDictionary *continentElement = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:name, country, nil] forKeys:[NSArray arrayWithObjects:@"Name", @"Country", nil]];

    [rootElement setObject:continentElement forKey:@"Continent"];

    //Create plist file
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
    NSString *filePath = [docDir stringByAppendingPathComponent:@"myPlist.plist"];
    [rootElement writeToFile:filePath atomically:YES];

    NSLog(@"%@", rootElement);
}

-(void)readAppPlist
{
    // Get pList file path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
    NSString *filePath = [docDir stringByAppendingPathComponent:@"myPlist.plist"];

    NSMutableDictionary *propertyDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
    NSDictionary *rootDict = [propertyDict valueForKey:@"Continent"];

    // now read all elements inside, it will print key an value
    [rootDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
        NSLog(@"[%@]->[%@]",key,obj);
    }];
}