沙箱和MKNetworkKit的基本操作

沙箱:ios设备上为每一个应用程序建立的一个私有文件,用来保存数据,不同应用程序不能访问彼此的沙箱。
沙箱目录如下
这里写图片描述
沙箱里面的文件以及获取
1.Documents:保存比较大而且更新频率较高的数据,或者在应用程序里面建立的数据,iTunes或iCloud更新时可以自动备份。
访问Documents目录的语句:

      NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,Yes) ;
      NSString *docPath = array[0] ;

2.Library->Caches:用来保存缓存文件,例如图片etc。
访问Caches目录的语句(与document相似):

     NSArray *array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,Yes) ;
      NSString *docPath = array[0] ;

3.Library->Preferences:系统偏好设置,用来保存与应用程序设置相关的小数据。
访问Preferences目录的语句:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults] ;
    defaults = [defaults initWithSuiteName:@"preferencetest"] ;
    [defaults setObject:@"yans67" forKey:@"name"] ;
    [defaults setObject:@"15766227833" forKey:@"number"] ;
    [defaults setInteger:21 forKey:@"age"] ;
    [defaults synchronize] ;        //同步保存到磁盘

4.tmp:用来保存临时文件,应用程序退出时数据将丢失。
访问tmp目录的语句:

   NSString *tmpPath = NSTemporaryDirectory( ) ;

PS:如果想在沙箱里面创建文件,则需要NSFileManager类的帮助

   NSFileManager  *fm = [NSFileManager defaultManager] ;
    //判断plist文件是否存在,不存在则重新建立一个
    if(![fm fileExistsAtPath:@"文件的绝对路径"){
        [fm createFileAtPath:@"文件的绝对路径" contents:nil attributes:nil] ;
}

——————————————————华丽丽的分割线————————————————————–
MKNetworkKit

  • 1.在gitHub上下载MKNetworkKit项目,并将项目里面的NMKNetworkKit文件夹复制到自己的项目中
    这里写图片描述

  • 2.在工程添加相应的framework

    这里写图片描述

  • 3.使用时添加头文件 #import “MKNetworkKit.h”

先介绍两个重要的类:

  1. MKNetworkEngine:

    网络管理队列,负责生成网络请求(创建operation对象)和执行网络请求(enqueOperation:op)。

  2. MKNetworkOperation :
    网络请求操作。

示例代码如下(下载一张图片,并将图片保存到caches目录中,myProgress为进度条,email邮箱为51work6注册账号):

- (IBAction)downloadAction:(id)sender {
    if(!self.myImage.image){    

        //    设置下载图片后保存的路径
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) ;
        NSString *temp = paths[0] ;
        NSString *downloadpath = [temp stringByAppendingPathComponent:@"test1.jpg"] ;

        //    1.请求的url路径,并将其转化成url格式
        NSString *path = [NSString stringWithFormat:@"/service/download.php?email=1018743361@qq.com&FileName=test1.jpg"] ;
        path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;

        //    2.定义网络管理队列engine,并且为其网络定义主机名
        MKNetworkEngine *engine = [[MKNetworkEngine alloc]initWithHostName:@"51work6.com"] ;

        //    3.定义网络请求,并且直接定义其路径
        MKNetworkOperation *op = [engine operationWithPath:path params:nil httpMethod:@"post"] ;

        //    4.添加网络请求
        //            4.1下载地址,相对于post请求多出了这一句,但是必须在其参数中定义要下载的路径
        [op addDownloadStream:[NSOutputStream outputStreamToFileAtPath:downloadpath append:NO] ];
        //            4.2下载进度改变
        [op onDownloadProgressChanged:^(double progress) {
            self.myProgress.progress = progress ;

        }];
        //            4.3完成请求后的处理
        [op addCompletionHandler:^(MKNetworkOperation *completedOperation) {
            UIImage *image = [UIImage imageWithContentsOfFile:downloadpath] ;
            self.myImage.image = image ;
        } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
            NSLog(@"mknetwork请求错误")  ;
        }] ;
        //    5.将网络请求加入网络管理队列
        [engine enqueueOperation:op] ;
    }
}

这里写图片描述
这里写图片描述

参考资料:《IOS开发指南 从零基础到App Store上架》第三版 关东升著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值