iOS archiveRootObject 归档失败问题

归档失败问题出在路径上,NSHomeDirectory()

NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];

stringPath = [stringPath stringByAppendingPathComponent:@"a.txt"];            // 成功

NSLog(@"1111%@",stringPath);

NSString * path2 = [NSHomeDirectory() stringByAppendingPathComponent:@"a.txt"];      // 失败,注意这里用的是NSHomeDirectory()

NSLog(@"2222%@",path2);

BOOL suc = [NSKeyedArchiver archiveRootObject:@"aaaa" toFile:path2];

if (suc) {

NSLog(@"user 归档成功!");

}else{

NSLog(@"user 归档失败!");

}

1.NSHomeDirectory()  :

/var/mobile/Containers/Data/Application/28C6BFE8-4E50-4DEB-9E55-18F0815CDBC5

2.[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0] :

/var/mobile/Containers/Data/Application/F7DC1040-57CB-4104-8AD6-55E9F287FC38/Documents/

看一下,

NSHomeDirectory() + /fileName   =  /var/mobile/Containers/Data/Application/28C6BFE8-4E50-4DEB-9E55-18F0815CDBC5/fileName  归档失败

[...NSDocumentDirectory...] +/fileName  = /var/mobile/Containers/Data/Application/F7DC1040-57CB-4104-8AD6-55E9F287FC38/Documents/fileName 成功 

红色区域是问题所在

时间: 2024-10-22 02:58:17

iOS archiveRootObject 归档失败问题的相关文章

由于IPv6导致的iOS应用发布失败,是否该怪Azure?

IPv6已经被越来越广泛的支持了,尤其是苹果强制要求iOS (确切的说是iOS 9以及后续版本)应用必须支持IPv6之后(官方宣布),更将进一步推动IPv6的使用. 不过苹果应用作为客户端强制要求IPv6,是不是变相地要求服务端也得是IPv6支持的呢?最近就发现很多抱怨,说由于Azure不支持IPv6,所以导致调用了Azure服务的应用发布失败.比如这个Azure feedback里的评论. 首先我同意Azure或者其他服务提供商应该更多的支持IPv6,而且Azure上的VM和负载均衡在大部分区

ios接入外部设备失败

app需要ios设备连接第三方硬件,根据第三方硬件的SDK文档调用完全无反应. 解决方案: Targets 中如下操作: 1.BuildPhase --> Link binary with libraries 添加ExternalAccessory.framework: 2.Info --> Custom IOS Target Properties 添加 Supported external accessory protocols,添加要引用的外部protocol. ios接入外部设备失败

IOS --- 对象归档

原文:http://blog.sina.com.cn/s/blog_7124765801015imx.html IOS提供的数据持久化方式有:SQLite.CoreData.属性列表.NSUserDefault.对象归档. 这里来简单介绍下对象归档: 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化), (对象归档的文件是保密的,在磁盘上无法查看文件中的内容,而属性列表是明文的,可以查看). 对象归档有两种方

关于iOS的归档

归档,在其他语言中又叫“序列化”,就是将对象保存到硬盘:解档,在其他语言又叫“反序列化”就是将硬盘文件还原成对象.其实归档就是数据存储的过程,在IOS中数据的存储有五种方式: xml属性列表(plist归档) NSUserDefaults(偏好设置) NSKeyedArchiver归档(加密形式) SQLite3(嵌入式数据库) Core Data(面向对象方式的嵌入式数据库) 一.首先我们先来看一下xml属性列表,xml属性列表进行归档的方式是将对象存储在一个plist文件中,这个操作起来比较

在Xcode 6 beta里编译Cocos2d-x iOS项目时失败

转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite$UNIX2003", referenced from: _unixErrorHandler in libcocos2dx iOS.a(tif_unix.o) _unixWarningHandler in libcocos2dx iOS.a(tif_unix.o) _empty_output_

iOS之归档解档

前几篇文章说到了OC中的Foundation框架:http://blog.csdn.net/jiangwei0910410003/article/details/41852835,今天我们来看一下OC中的一个重要知识点:归档 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都是需要实现一个接口:Serializable,同样的OC中操作的对象也是需要实现一个协议的,后面会说到. 一.已有

php mysql 存储 IOS Emoji表情失败和乱码问题

感谢伟大的网络,给我们带来了很多有用的信息 然后开始 项目需要给app提供接口,发现IOS开发存储Emoji表情失败,或者乱码,在这里给自己留个记录以及给大家带来一些参考 首先是字符集的问题,mysql字符集大多数使用的是utf8,需要把字符集更换成utf8mb4,因为UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,utf8mb4则扩展到一个字符最多能有4字节,并且兼容utf8 在mysql终端查看下mysql当前版本所支持的字符集,

iOS 应用安装失败原因排查

前言 iOS 的内测应用在安装时,很多人都遇到过安装失败的情况,安装失败的原因比较多,下面我们将一些常见原因总结如下,方便开发者进行排查. 应用安装过程中提示"无法下载应用程序" 原因一:在导出 iOS App 的安装包文件(.ipa文件)时,选择了 App-Store 方式. ... 原因二:在导出 iOS App 的安装包文件(.ipa文件)时,选择了 Ad-hoc 方式,但是没有添加设备 UDID. ... 原因三:在导出 iOS App 的安装包文件(.ipa文件)时,选择了

关于iOS开发归档与解归档路径问题

今天回头看了一下归档与解归档,有普通的归档与解归档,更好的方法是runtimer.在这里我不是讲归档与解归档,而是讲很多文档中出现的一个问题,希望给大家带来帮助,不说废话了,上代码. 1:错误的代码 NSString *filePath = [NSHomeDirectory() stringByAppendingString:@"person"]; 很多文章中用这样的方式获取路径,这句代码的的意思是,在主路径上拼接一个person路径.可惜不成功,不成功的原因应该是苹果手机权限问题.