Plist Array to NSDictionary

前端 未结 2 1458
被撕碎了的回忆
被撕碎了的回忆 2020-12-01 14:53

I have a plist:


  
    
      name
      Alabama
          


        
2条回答
  •  -上瘾入骨i
    2020-12-01 15:40

    A more flexible way to load plists into memory, that also allows you to create mutable plists:

    NSData* data = [NSData dataWithContentsOfFile:path];
    NSMutableArray* plist = [NSPropertyListSerialization propertyListFromData:data
                                                             mutabilityOption:NSPropertyListImmutable
                                                                       format:NSPropertyListXMLFormat_v1_0
                                                             errorDescription:NULL];
    

    Thus your code could be implemented as:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"stateInfo" ofType:@"plist"];
    NSData* data = [NSData dataWithContentsOfFile:path];
    NSMutableArray* array = [NSPropertyListSerialization propertyListFromData:data
                                                             mutabilityOption:NSPropertyListImmutable
                                                                       format:NSPropertyListXMLFormat_v1_0
                                                             errorDescription:NULL];
    if (array) {
      NSMutableDictionary* myDict = [NSMutableDictionary dictionaryWithCapacity:[array count]];
      for (NSDictionary* dict in array) {
        State* state = [[State alloc] initWithDictionary:dict];
        [myDict setObject:state forKey:state.name;
        [state release];
      }
      NSLog(@"The count: %i", [myDic count]);
    } else {
      NSLog(@"Plist does not exist");
    }
    

提交回复
热议问题