【发布时间】:2009-07-05 15:29:20
【问题描述】:
我正在编写一个主要以网格模式为中心的 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 应用程序中创建和保存模式
- 将模式文件添加到 XCode for iPhone 应用程序的资源组中; (我添加为
test.pat) - 取消归档我的 iPhone 应用程序中的模式,使用以下代码:
pattern = [NSKeyedUnarchiver unarchiveObjectWithFile:@"test.pat"]; - 将模式文件添加到 XCode for iPhone 应用程序的资源组中; (我添加为
但是,当我尝试从该文件中取消归档对象时,返回的只是nil。我以为我可能是文件路径错误,也尝试了@"Resources/test.pat",但无济于事。
我只是错误地引用了文件吗?还是归档对象根本不是跨平台的?这整个方法是完全错误的吗?如果是这样,你会怎么做?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch