这是一个错误:



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

  • 设置两个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)
    }
    
  • 最佳答案

    我找到了一个解决方案:

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

    ios - 使用Set时将Swift 2.0 : Could not cast value MyApp. MyCustomClass更改为MyAppTests.MyCustomClass-LMLPHP

    因为他们应该这样做,所以:

    ios - 使用Set时将Swift 2.0 : Could not cast value MyApp. MyCustomClass更改为MyAppTests.MyCustomClass-LMLPHP

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

    ios - 使用Set时将Swift 2.0 : Could not cast value MyApp. MyCustomClass更改为MyAppTests.MyCustomClass-LMLPHP

    这样,目标之间的转换值就不再存在问题。它为我工作:-)享受:-)

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

    关于ios - 使用Set时将Swift 2.0 : Could not cast value MyApp. MyCustomClass更改为MyAppTests.MyCustomClass,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31089389/

    10-12 00:18
    查看更多