oc总结

2018-04-18  本文已影响0人  这个姑凉儿
Person *ppp=[[Person alloc]init];
    //普通赋值
    ppp.name = @"ppp";
    //kvc赋值
    [ppp setValue:@"aaa" forKey:@"name"];
    //kvc取值
    NSString *str=[ppp valueForKey:@"name"];

实现kvo,被观察者的对象必须使用kvc来修改实例变量,这样才能被观察者观察到,因此,kvc是kvo的基础或者说kvo的实现是建立在kvc的基础上的

 NSArray *array=@[@"12",@"34"];
 NSString *path=@"/Users/zj/Desktop/text";
 //拼接路径
 NSString * path1=[path stringByAppendingPathComponent:@"array.txt"];       [array writeToFile:path1 atomically:YES];//写入文件             
//把文件读出来,arrayWithContentsOfFile:具有文件内容的数组
 NSArray *arr=[NSArray arrayWithContentsOfFile:path1];

注意:并不是所有的都可以writeToFilNSString,NSArray,NSDictionary,NSSet,NSDate都可以writeToFil
* 归档

调用
NSString *path=@"/Users/zj/Desktop/text/array.txt";
 Person *p=[[Person alloc]init];
        p.name=@"lala";
        p.age=@"12";
        //归档
        BOOL i = [NSKeyedArchiver  archiveRootObject:p toFile:path1];
        if (i) {
            NSLog(@"归档成功");
        }else{
             NSLog(@"归档失败");
        }
        //反归档(解档)
        Person *p1 = [NSKeyedUnarchiver unarchiveObjectWithFile:path1];
        NSLog(@"%@",p1.name);
类

#import <Foundation/Foundation.h>

@interface Person : NSObject<NSCoding>
//归档时需要遵守<NSCoding>协议
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *age;

@end


#import "Person.h"

@implementation Person
//归档
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:_name forKey:@"name"];
    [aCoder encodeObject:_age forKey:@"age"];

    
}
//反归档
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
    if (self=[super init]) {
        _name =[aDecoder decodeObjectForKey:@"name"];
    }
    
    return self;
}
@end

注意:对于自己创建的对象,只能归档反归档

上一篇 下一篇

猜你喜欢

热点阅读