繁体   English   中英

为什么我似乎无法在由OS X应用程序存档的iPhone应用程序中取消归档?

[英]Why can't I seem to unarchive objects in an iPhone app that were archived by an OS X app?

我正在编写一个iPhone应用程序,该应用程序主要围绕网格图案,因此我有一个Pattern类,其中包含NSMutableArrays的NSMutableArray。 该类实现了NSCoding,似乎以下代码在我的iPhone应用程序中可以正常工作:

GridPattern * pattern = [GridPattern patternWithWidth:8 height:8];
[pattern setValueAtColumn:0 row:7 value:1];
[NSKeyedArchiver archiveRootObject:pattern toFile:@"test.pat"];
pattern = [NSKeyedUnarchiver unarchiveObjectWithFile:@"test.pat"];

如果调试上面的代码,则在经过第4行之后,我发现我有一个GridPattern对象,该对象为第0列第7行设置了适当的值。

我还写了一个Cocoa OSX应用程序,旨在为iPhone应用程序创建模式,该应用程序也使用相同的GridPattern类。 它还可以成功加载和保存模式。

我想做的是:

  • 在OS X应用程序中创建并保存模式

    1. 将模式文件添加到iPhone应用程序的XCode的Resources组中; (我将其添加为test.pat
    2. 使用以下代码在iPhone应用程序中取消存档模式:

    pattern = [NSKeyedUnarchiver unarchiveObjectWithFile:@"test.pat"];

但是,当我尝试从该文件取消归档对象时,返回的只是nil 我以为我可能有错误的文件路径,还尝试了@"Resources/test.pat"无济于事。

我是否只是错误地引用了文件? 还是归档对象不是跨平台的? 这整个方法是完全错误的吗? 如果是这样,您将如何做?

我不知道跨平台归档的兼容性,但是要引用捆绑软件资源,应始终使用NSBundle进行查找。 不要依赖当前路径。

由于您的模型只是一个数组数组,因此可以使用在整个体系结构中都可以使用的XML属性列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM