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

Swift 2.0: Could not cast value MyApp.MyCustomClass to MyAppTests.MyCustomClass when using Set

这是一个错误:

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

您可以通过简单的方式重现错误:

  1. 设置二NSManagedObject

    @objc(Member)
    class Member: NSManagedObject {
        @NSManaged var family: Family
    }
    
    @objc(Family)
    class Family: NSManagedObject {
        @NSManaged var members: Set<Member>
    }
    
  2. 也在您的 .xcdatamodel 中进行设置:

  3. 然后在你的 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)
    }
    

我找到了解决办法:

我想那些有这样问题的人,是这样将他们的文件导入测试目标的:

因为他们应该这样做:

因此,只需从测试目标中删除文件即可。然后,如果您需要测试目标中的文件,只需在 every 测试 class.

中使用 @testable 关键字

这样在目标之间转换值就没有问题了。它对我有用:-) 享受:-)

阅读来自 Swift 2 + Xcode 7: Unit Testing Access Made Easy!!!!

的更多内容