OC-沙箱&归档

沙箱:

Documents:最长打交道的文件夹,保存长期有用数据 iTunes会备份此文件夹
Library/Caches: 缓存文件夹 装缓存数据 iTunes不会备份
Library/Preferences:偏好设置文件夹 保存用户偏好设置数据 iTunes会备份
tmp:临时文件夹 装临时文件 此文件夹数据会不定时清除 iTunes不会备份

NSLog(@"沙箱的根目录:%@",NSHomeDirectory());

    NSString *documentPath1 = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
    documentPath1 = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *documentPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];

    NSLog(@"%@--%@",documentPath1,documentPath2);


    //得到临时文件夹
    NSString *tmpPath = NSTemporaryDirectory();
    NSLog(@"临时文件夹:%@",tmpPath);
    //得到缓存文件夹
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)firstObject];
    NSLog(@"缓存文件夹:%@",cachePath);


    NSString *filePath = [documentPath1 stringByAppendingPathComponent:@"names.plist"];
    NSArray *names = @[@"刘德华",@"张学友",@"郭富城",@"赵四"];
    [names writeToFile:filePath atomically:YES];

用户偏好设置Library/Prefrence:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
    //保存数据
    [ud setInteger:18 forKey:@"age"];

    //同步
    [ud synchronize];


    //获取数据
    NSInteger age = [ud integerForKey:@"age"];

归档:把对象转成Data的一种方式

只有实现了NSCoding协议的对象 才能转成NSData

//把UIView 转成Data
    NSData *viewData = [NSKeyedArchiver archivedDataWithRootObject:self.myView];


    [viewData writeToFile:@"/Users/shuan/Desktop/view.arch" atomically:YES];
    NSData *data = [NSData dataWithContentsOfFile:@"/Users/shuan/Desktop/view.arch"];


    //通过反归档把 nsdata 转回对象
    UIView *view = [NSKeyedUnarchiver unarchiveObjectWithData:data];

自定义对象归档:

//自定义对象要采纳NSCoding协议
@interface Student : NSObject<NSCoding>

@property (nonatomic, copy)NSString *name;
@property (nonatomic)NSInteger age;

@end
//实现NSCoding协议中的方法
#import "Student.h"

@implementation Student
//实现编码方法 在方法中对每一个属性进行编码
- (void)encodeWithCoder:(NSCoder *)aCoder{

    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeInteger:self.age forKey:@"age"];



}


- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{

    self = [super init];

    if (self) {

        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.age = [aDecoder decodeIntegerForKey:@"age"];

    }
    return self;
}

@end
//    Student *s = [Student new];
//    s.name = @"刘德华";
//    s.age = 28;
//    
//    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:s];
//    
//    [data writeToFile:@"/Users/tarena/Desktop/student.arch" atomically:YES];

//    反归档************
    NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/Desktop/student.arch"];

    Student *s = [NSKeyedUnarchiver unarchiveObjectWithData:data];
- 黑盒测试的目的是验证软件系统的功能是否按照规格说明书的要求正常工作,而不需要了解系统内部的实现细节。测试人员根据输入和预期输出来设计测试用例,然后执行这些测试用例,验证系统是否能够正确地处理输入并产生正确的输出。 - 白盒测试的目的是验证软件系统的内部逻辑是否正确。测试人员需要了解系统的内部实现细节,通过检查代码、执行路径和数据流等来设计测试用例,然后执行这些测试用例,验证系统是否能够正确地执行各种情况下的代码路径。 - 沙箱测试的目的是测试软件系统在隔离环境中的行为。测试人员在隔离的环境中运行系统,以确保系统不会对外部系统或环境产生负面影响。 - 单元测试的目的是验证系统中的单个模块是否按照设计要求正常工作。测试人员编写测试用例来验证模块的输入和输出,以确保模块能够正确地处理各种情况下的数据和逻辑。 - 集成测试的目的是验证系统中各个子系统之间的交互是否按照设计要求正常工作。测试人员使用模拟数据和环境来测试系统的各个部分,以确保它们能够协同工作。 - 用户验收测试的目的是验证系统是否满足用户的需求和期望。测试人员使用真实数据和环境来测试系统,并且模拟用户的使用情况,以确保系统能够满足用户的需求,并且易于使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值