我有一个PLIST文件,该文件是使用应用程序的生产版本创建的,并作为资源添加到项目中。生产版本的目标名称为“小马驹”。为了帮助进行应用程序测试,在同一项目“小马beta”下建立了另一个版本,尽管目标不同。 在运行时,Beta应用程序尝试加载PLIST并崩溃,并显示以下消息:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (little pony.Layer) for key (NS.objects); the class may be defined in source code or a library that is not linked'
为了成功加载,似乎PLIST应该包含little pony beta.Layer
而不是little pony.Layer
类。
是否有任何方法可以使NSKeyedUnarchiver.unarchiveObjectWithFile
使用不同的命名空间来工作?当然,我不想创建两组不同的预编译数据,因为这是CPU密集型任务。
答案 0 :(得分:0)
我在这里找到了解决方案: https://stackoverflow.com/a/37162921/279813
该解决方案建议通过使用
更改NSCoding类的名称。[NSKeyedUnarchiver setClass:[Layer self] forClassName:@"little pony beta.Layer"];