OC从plist文件中获取数据

来源:互联网 发布:封印者画质优化补丁 编辑:程序博客网 时间:2024/06/11 23:44

怎样从plist文件中读取数据,这个和反归档相似,但是也存在着区别,比如说不用解码,当然一般我们获取的数据往往是对一个对象的描述,而且数据的个数也不是一个,因此我们有必要来说一下怎样完整的从plist文件中获取数据,然后放最后以对象的形式放到数组中。

在这个地方我们通过一个例子来描述一下,怎样来完成这些操作。

第一步是创建一个类:

#import <Foundation/Foundation.h>
@interface App : NSObject
@property(nonatomic , copy) NSString *name ;
@property(nonatomic , copy) NSString *icon ;
-(instancetype)initWithName:(NSString *)name andIcon:(NSString *)icon ;
+(instancetype)appWithName:(NSString *)name andIcon:(NSString *)icon ;
@end

根据数据的属性来或获取一个对象:

然后在实现文件中实现这些类:

#import "App.h"
@implementation App
-(instancetype) initWithName:(NSString *)name andIcon:(NSString *)icon
{
    if(self=[super init])
    {
        self.name=name;
        self.icon=icon;
    }
    return self;
}
+(instancetype) appWithName:(NSString *)name andIcon:(NSString *)icon
{
    return [[self alloc] initWithName:name andIcon:icon];
}
@end

实现之后我们要进行的操作是:


在ViewController.m这个文件写入这些代码:

#import "ViewController.h"
#import "App.h"
@interface ViewController ()
//现在我们做的都是为了获取文件
//我们在这个地方定义一个数组,为了是能够盛放所创建对象
@property(nonatomic,strong) NSMutableArray *apps;
@end
@implementation ViewController
//重写数组的get方法
-(NSMutableArray*)apps{
    //首先是判断这个数组是不是为空
    if(_apps==nil)
    {
        //在这个地方我们可以认为是创建给这个数组赋一个初值
        _apps=[NSMutableArray array];
        //获取文件,要知道的是这个文件的类型是一个字符串
        NSString *file=[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
        //从文件中获取数据,这个从文件中获取了对象并且存储在一个数组中
        NSArray *arr=[NSArray arrayWithContentsOfFile:file];
        for(NSDictionary *dict in arr)
        {
            NSString *name=[dict valueForKey:@"name"];
            NSString *icon=[dict valueForKey:@"icon"];
            App *app=[[App alloc] initWithName:name andIcon:icon];
     
        [_apps addObject:app];
        }
    }
    return _apps;
}
最后我们返回的数组中也就有里里面也就是我们获取的对象。



0 0
原创粉丝点击