ios – Swift 2.0:使用Set时,无法将值MyApp.MyCustomClass转换为MyAppTests.MyCustomClass

这是一个错误:

Could not cast value of type MyApp.Member (0x1674daf8) to MyAppTests.Member (0x4c07248).

您可以轻松地重现错误:

>设置两个NSManagedObject

@objc(Member)
class Member: NSManagedObject {
    @NSManaged var family: Family
}

@objc(Family)
class Family: NSManagedObject {
    @NSManaged var members: Set<Member>
}

>也可以在.xcdatamodel中设置它:
>然后在你的TestFile中:

func testA() {

    let family = Family.MR_createEntityInContext(context)
    let father = Member.MR_createEntityInContext(context)

    father.family = family

    let firstMember = family.members.first

    XCTAssertEqual(firstMember!,father)
}

解决方法

我找到了一个解决方案:

我认为那些有这个问题的人把他们的文件导入到这个测试对象:

enter image description here

因为他们应该这样做:

enter image description here

所以,只需从测试目标中删除文件。然后,如果您需要在测试目标中的文件,只需在每个测试类中使用@testable关键字。

enter image description here

这样就不用再在目标之间投射值了。它为我工作:-)享受:-)

阅读更多从Swift 2 + Xcode 7: Unit Testing Access Made Easy!!!!

相关文章

在有效期内的苹果开发者账号(类型为个人或者公司账号)。还...
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台...
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可...
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Li...