зачитывает вопрос Плиста - PullRequest
       8

зачитывает вопрос Плиста

0 голосов
/ 05 января 2012

Почему вывод naam (NULL)?(извините, я знаю, что это основной материал, но я новичок в списках)

Это список: enter image description here

Вот метод:

- (id) init {

self = [super init];
if (self) {
    NSString *errorDesc = nil;
    NSPropertyListFormat format;
    NSString *plistPath;
    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                              NSUserDomainMask, YES) objectAtIndex:0];
    plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
    NSLog(@"path: %@",plistPath);
    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
        plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
    }
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];

    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
                                          propertyListFromData:plistXML
                                          mutabilityOption:NSPropertyListMutableContainersAndLeaves
                                          format:&format
                                          errorDescription:&errorDesc];
      NSLog(@"temp: %@",temp);
    if (!temp) {
        NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
    }
    self.personName = [temp objectForKey:@"Name"];
    NSLog(@"NAAM:%@",[temp objectForKey:@"Name"]);
    self.phoneNumbers = [NSMutableArray arrayWithArray:[temp objectForKey:@"Phones"]];


}
return self;}

the output

Ответы [ 4 ]

1 голос
/ 05 января 2012

попробуйте

NSLog(@"NAAM: %@", [temp valueForKeyPath:@"Root.Name"]);

Чтобы перейти на первый телефон из Phones, сделайте следующее:

NSDictionary *root = [temp valueForKey:@"Root"];
[[root valueForKey:@"Phones"] objectAtIndex:0];
1 голос
/ 05 января 2012

Попробуйте сначала извлечь ROOT.

NSDictionary* root=[temp objectForKey:@"Root"];
NSLog(@"NAAM:%@",[root objectForKey:@"Name"]);
1 голос
/ 05 января 2012

Поскольку temp - это словарь, содержащий только один ключ: @ "Root". Вы ищете объект во внутреннем словаре: [[temp objectForKey:@"Root"] objectForKey:@"Name"]

0 голосов
/ 12 июня 2013

мой "Words.plist"

<dict>
    <key>Root</key>
    <array>
        <string>sunday</string>
        <string>monday</string>
        <integer>44</integer>
    </array>
</dict>


NSString *StringsFromPList = [[NSBundle mainBundle] bundlePath];
NSString *itemPositionPlistLocation = [StringsFromPList stringByAppendingPathComponent:@"Words.plist"];
 _myDictionary= [[NSDictionary alloc] initWithContentsOfFile:itemPositionPlistLocation];
NSArray * items = [_myDictionary objectForKey:@"Root"];
NSLog(@"%@", items);

Надеюсь, это поможет немного:)

...