Swift Xcode 6 在测试时给出 SIGABRT
Swift Xcode 6 gives SIGABRT when Testing
我最近更新到 Xcode (6.3) 的最新版本,现在无法 运行 我们的测试,这些测试以前是正常的。
它抛出一个包含以下信息的 SIGABRT:
Could not cast value of type 'MyApplication.MyPSClass' (0x109d7f410) to 'MyApplicationTests.MyPSClass' (0x1197ddec0).
MyApplicationTests 是测试目标,MyApplication 是正常的应用程序目标。
MyApplication 使用 Parse 作为我们的后端。此错误是否可能是子类化功能的结果?
MyClass 将 PFObject 和 PFSubclassing 子类化为 Parse 的子类化文档中指定的子类:
class MyPSClass : PFObject, PFSubclassing { ... }
显示"Thread 1: SIGABRT"的行是:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
包含此行的测试 Class 文件如下所示:
import UIKit
import XCTest
class MyClassTests: XCTestCase {
override func setUp() {
super.setUp()
//...
}
func testInit() {
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
//...
}
override func tearDown() {
super.tearDown()
}
}
为什么会发生这种情况,我该如何解决?提前致谢!
这一行发生了什么:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
您正在将 MyPSClass 转换为 MyApplicationTests.MyPSClass。您无法分辨,因为 swift 使用隐式名称空间(隐藏了 MyApplicationTests 名称空间)。您可以使用:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyApplication.MyPSClass
我最近更新到 Xcode (6.3) 的最新版本,现在无法 运行 我们的测试,这些测试以前是正常的。
它抛出一个包含以下信息的 SIGABRT:
Could not cast value of type 'MyApplication.MyPSClass' (0x109d7f410) to 'MyApplicationTests.MyPSClass' (0x1197ddec0).
MyApplicationTests 是测试目标,MyApplication 是正常的应用程序目标。
MyApplication 使用 Parse 作为我们的后端。此错误是否可能是子类化功能的结果?
MyClass 将 PFObject 和 PFSubclassing 子类化为 Parse 的子类化文档中指定的子类:
class MyPSClass : PFObject, PFSubclassing { ... }
显示"Thread 1: SIGABRT"的行是:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
包含此行的测试 Class 文件如下所示:
import UIKit
import XCTest
class MyClassTests: XCTestCase {
override func setUp() {
super.setUp()
//...
}
func testInit() {
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
//...
}
override func tearDown() {
super.tearDown()
}
}
为什么会发生这种情况,我该如何解决?提前致谢!
这一行发生了什么:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
您正在将 MyPSClass 转换为 MyApplicationTests.MyPSClass。您无法分辨,因为 swift 使用隐式名称空间(隐藏了 MyApplicationTests 名称空间)。您可以使用:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyApplication.MyPSClass