NSCoding的使用方法---iOS上的归档.

在iOS上的归档和在Mac上的归档有些不一样, 在Mac上的归档你可以把文件放在任意的一个文件夹里面, 但是在iOS上, 你所写的文件就只能放在三个文件夹里, 分别是Documents, Library, tmp三个文件, 这里需要注意一下, librarytmp文件会在软件升级, 系统升级或者系统空间不足时会自动清除里面的文件, 只有在Documents文件才可以永久保存, 直到你把软件删除为止.

这里涉及的方法:

NSHomeDirectory:这个方法的意思就是获取软件的主目录.

stringByAooendingPathComponent:这个方法的意思就是在目录后添加一个文件.

下面我们来看看例子:

#import "ViewController.h"
#define PZ NSLog(@"----我是一条华丽的分割线----");

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //获取软件的主目录并且在Documents目录下添加test.txt文件.
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.txt"];

    //创建文件的路径为path.
    [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];
    NSString *str = @"Hello, world!";

    //2.只写的方式打开文件, 并且把文件的写入路径赋给了writeHanle.
    NSFileHandle *writeHanle = [NSFileHandle fileHandleForWritingAtPath:path];

    //把str里的字符串以UTF8编码存入data, 在这里就完成了归档.
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    //解档: 把归档好的二进制代码以UTF8编码格式转换好赋给了字符串对象str2.
    NSString *str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@", str2);

    //打开文件后要记得关闭, 就和内存管理一样.
    [writeHandle closeFile];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

输出的结果:

2014-10-19 17:31:57.039 FileHandleDemo[12364:672084] Hello, world!
时间: 2024-10-07 19:01:07

NSCoding的使用方法---iOS上的归档.的相关文章

NSCoding的使用方法---iOS上的归档(增加更改内容的方法).

上一章我们介绍了在iOS上的归档以及解档, 今天我们在归档之后稍微做一些改变, 使得解档之后得到的结果有所不同, 这个方法类似NSMutableXXX, 可修改里面的参数, 下面让我们来看看吧. 涉及的方法: seekToFileOffset:这个方法是寻求方法的偏移, 意思就是在文件中寻找文本里的起点. readDataOfLength:这个方法是指读取文件的长度是多少. offsetInFile:是指写到第几个位置. #import "ViewController.h" #defi

NSCoding的使用方法---Mac上的归档.

NSCoding是什么? NSCoding就是我们俗称的归档, 归档的意思就是把工程里的某一段对象的代码以文件的方式储存起来, 在这里分别有两种归档方式, 一中是在Mac上的归档, 一种是iOS上的归档, 今天这里只介绍在Mac上的归档. 这里涉及的方法. NSData NSKeyedArchiver archivedDataWithRootObject:这个方法的意思就是把某一个对象以二进制的形式储存起来. writeToFile: atomically:这个方法的意思就是, 存储的路径以及是

NSCoding的使用方法---Mac上的归档(优化版).

这个方法是根据上次发的那个方法进行了一些修改, 更加方便一些. 由于新建的类里面的代码没有更改, 所以这里不再写了. 优化的好处: 在开头的时候定义一个宏, 把路径直接放在宏这里, 如果以后要更改地址, 直接更改宏定义的就OK了. #import <Foundation/Foundation.h> #import "Human.h" #define PATH @"/Users/Cain/Desktop/Objective-C/实验代码/文件操作/归档/Human/

iOS 上拉下拉刷新

1 把李明杰的MJRfresh文件夹拖到工程中 2 然后引入头文件 3 在.m 文件中设置两个变量 4 在viewDidLoad里调用两个方法 5 实现需要调用的两个方法 iOS 上拉下拉刷新,布布扣,bubuko.com

【转】iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法

iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现, 首先是点击return和屏幕隐藏键盘 这个首先引用双子座的博客 http://my.oschina.net/plumsoft/blog/42545,他的文章写的很好,对大家的理解很有好处. 在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘.对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它.例如,我们可以实现按下 Rerun (有

input.focus()在IOS上失效的解决方法

之前在iphone上做开发时遇到一个问题,在一般的正常浏览器上输入以下代码: 1 2 var apple = document.getElementById('abc'); apple.focus(); 就能将焦点聚集在输入框上:但是在ios上不行 解决方案: 只有通过绑定在事件上的函数触发,才能聚焦,例如: 1 2 3 4 var apple = document.getElementById('abc'); button.addEventListener('click',function()

iOS开发 - 数据归档与恢复 NSKeyedArchiver

归档与恢复归档 归档,英文Archiver['ɑrk?v?],这里指的是将OC的对象存储为一个文件或者网络上的一个数据块. 恢复归档.英文UnArchiver,指的是将一个来自文件或网络的归档数据块恢复成内存中的一个OC对象. 归档和恢复主要用于对自己定义类型对象进行存储.在程序暂停或关闭前保存自己定义数据.在程序又一次恢复状态或启动后读取存储的自己定义数据. 支持归档和恢复的类必须实现NSCoding协议,再由NSKeyedArchiver和NSKeyedUnarchiver类进行转换.将对象

iOS:文件归档和解归档的详解和使用

文件归档和解归档: 用途: 所谓文件归档,就是把需要存储的对象数据存储到沙盒的Documents目录下的文件中,即存储到了磁盘上,实现数据的持久性存储和备份.解归档,就是从磁盘上读取该文件下的数据,用来完成用户的需求.对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径的读取文件的内容(也称为接档,反序列化),(对象归档的文件是保密的,在磁盘上无法查看文件中的内容,而属性列表是明文的,可以查看). 区别: 通过文件归档产生的文件是不可见的,如果打开

深度学习之在iOS上运行CNN

1 引言 作为曾经的iOS开发者,在研究深度学习的时候,总有一个想法就是在iPhone上运行深度学习,不管是在手机上训练还是利用训练好的数据进行测试. 因为iOS的开发环境支持C++,因此,只要你的代码是C/C++,本质上就可以在iOS上运行. 怎么才能更快更好地在iOS上运行CNN呢? 2 方法1:通过Matlab转码 Matlab自带转成c的工具,如果你研究过UFLDL的深度学习教程,就知道如何在Matlab上使用CNN,那么,转换成c后,放到iOS的开发环境中,然后将参数存成txt格式再读