plist文件读取,字典数组转模型数组,即:字典转模型

- (instancetype)initWithDict:(NSDictionary *)dict
{
    self = [super init];
    if (self) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}
+ (instancetype)heroWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
+ (NSArray *)heros
{
    NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil]];
    NSMutableArray *arrayM = [NSMutableArray array];
    for (NSDictionary *dict in array) {
        [arrayM addObject:[self heroWithDict:dict]];
    }
    return arrayM;
}

 plist文件写入,模型数组转字典数组

        NSString *path = [[NSBundle mainBundle] pathForResource:@"heros" ofType:@"plist"];
        BOOL success = YES;
        // 归档写入方式,写入的内容不仅仅包括字典数组,上层还有系统针对对象添加的内容,不可取
        // success = [NSKeyedArchiver archiveRootObject:self.heros toFile:path];
        NSMutableArray *arrayM = [NSMutableArray array];
        for (LPKHeros *model in self.heros) {
            NSDictionary *dict = [model dictionaryWithValuesForKeys:@[@"name", @"icon", @"intro"]];
            [arrayM addObject:dict];
        }
        success = [arrayM writeToFile:path atomically:YES];
        if (success) {
            NSLog(@"写入成功!");
        }