我有一个使用Parse.com作为后端的示例应用程序,现在我正在编写一些单元测试。
如Parse文档中所述,当我将PFObject
子类化时,我实现了初始化方法:
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
当我运行单元测试时,我的应用程序在initialize方法中崩溃并出现以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'尝试将TargetName.MyObject和TargetNameTests.MyObject都注册为MyObject的本机PFObject子类。无法确定要使用的正确类,因为它们都不会从另一个继承。
知道如何解决这个问题吗?
答案 0 :(得分:3)
我找到一种方法来实现这项工作的唯一方法是不在测试目标中包含子类,并将子类及其变量和方法声明为public。并导入您的应用程序目标
#import MyProject
#import Parse
#import XCTest
public class MySubClass: PFObject, PFSubclassing {
@NSManaged public var name: String?
public static func parseClassName() -> String {
return "MySubClass"
}
}
然后在测试文件中,您需要调用该类:
let testObject = MyProject.MyClass()