0

我是 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);
}
4

1 回答 1

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);
    }];
}
于 2013-03-28T15:15:38.057 回答