码迷,mamicode.com
首页 > 其他好文 > 详细

[How to]如何自定义plist文件和读取plist文件内容

时间:2015-12-15 12:13:49      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

1.简介

plist作为IOS的固化文件,就好比java中properties文件,但是在IOS中plist是可读写的。

本文将介绍自定义静态的plist文件。

2.自定义静态plist文件

右击你的目的文件夹,然后选择【New File....】进行如下选择:

技术分享

 

我们创建了一个goods的plist文件,它的默认内容是:

技术分享

我们预计他是包含一个团购的cell内容,包含上平图片、名称、价格和当前购买人数

他是一个以数组,元素为字典类型,字典中以保存图片、名称、价格和当前购买人数信息:

可以如下定义:

技术分享

为了简便起见,我们在数组中定义了25个字典元素,其中内容都差不多,只有售出数有差别。

 

3.懒加载方式读取plist内容

1.定义Model,注意model内的属性名称和plist中的属性名称必须一致,以为后续利用字典进行方便的初始化model

同时建立类方法来初始化model和加载plist

#import <Foundation/Foundation.h>

@interface XFGoodModel : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *image;
@property (nonatomic,assign) NSInteger price;
@property (nonatomic,assign) NSInteger soldNum;

- (instancetype)initWithDic:(NSDictionary *)dic;
+ (instancetype)goodWithDic:(NSDictionary *)dic;

+ (NSArray *)goodsList;
@end

 

 

 

2.实现初始化和加载方法

//
//  XFGoodModel.m
//  How to create groupBuy page
//
//  Created by apple on 15/12/15.
//  Copyright © 2015年 apple. All rights reserved.
//

#import "XFGoodModel.h"

@implementation XFGoodModel
- (instancetype)initWithDic:(NSDictionary *)dic
{
    if (self = [super init])
    {
        // 利用字典来进行属性初始化
        [self setValuesForKeysWithDictionary:dic];
    }
    
    return self;
}

+ (instancetype)goodWithDic:(NSDictionary *)dic
{
    return [[self alloc] initWithDic:dic];
}

+ (NSArray *)goodsList
{
    // 加载plist
    NSString *path = [[NSBundle mainBundle] pathForResource:@"goods" ofType:@"plist"];
    NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
    
    // 字典转模型
    NSMutableArray *tempArray = [NSMutableArray array];
    for (NSDictionary *dic in dictArray)
    {
        XFGoodModel *good = [XFGoodModel goodWithDic:dic];
        [tempArray addObject:good];
    }
    return tempArray;
}

@end

 

我们将plist的加载和初始化都封装进了对应的model中。

3. 加载model

一般我们会在controller中将plist中的数据加载以便于呈现,在controller中我们使用懒加载的方式进行plist数据的加载

一般可以这样做:

import "ViewController.h"
#import "XFGoodModel.h"

@interface ViewController ()
@property (nonatomic,strong) NSArray *goodsList;
@end

@implementation ViewController

/**
 *  懒加载plist信息
 */
-(NSArray *)goodsList
{
    // 如果未空就进行加载
    if(!_goodsList)
    {
        _goodsList = [XFGoodModel goodsList];
    }
    
    return _goodsList;
}

 

测试一下,基本上plist的加载都可以按照此方式进行操作,唯一需要注意的是根据plist的结构定义自己的model并根据plist结构进行循环初始化model。

 

[How to]如何自定义plist文件和读取plist文件内容

标签:

原文地址:http://www.cnblogs.com/ios123/p/5045901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!