我正在写一个主要以网格模式为中心的iPhone应用程序,所以我有一个包含NSMutableArray的NSMutableArray的Pattern类。这个类实现NSCoding,似乎下面的代码只是正常工作在我的iPhone应用程序:为什么我看起来不能在由OS X应用程序归档的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应用程序
- 添加格式文件到资源组中的XCode为iPhone应用程序; (我增加一条,作为
test.pat
) - 解除封存在我的iPhone应用程序的模式,使用如下代码:
pattern = [NSKeyedUnarchiver unarchiveObjectWithFile:@"test.pat"];
然而,当我尝试从这个文件解档的对象,所有返回的是nil
。我以为我可能有文件路径错误,也试图@"Resources/test.pat"
无济于事。
我只是简单地引用文件不正确?或者存档的对象根本不是跨平台的?这整个方法是错误的吗?如果是这样,你会怎么做?
谢谢,查克!你击中了要害。所以对于那些好奇的人来说,存档对象似乎在跨平台上工作。我使用了以下工作的代码: pattern = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@“test”ofType:@“pat”]]; – SamCee 2009-07-05 15:42:08