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

这是一个错误:

无法将typesMyApp.Member (0x1674daf8)的值转换为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也可以.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) } 

我find了一个解决scheme:

我想那些有这个问题的人会这样把他们的文件导入testing目标:

在这里输入图像说明

既然他们应该这样做:

在这里输入图像说明

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

在这里输入图像说明

这样,目标之间的铸造值就没有问题了。 它为我工作:-)享受:-)

阅读更多从Swift 2 + Xcode 7:unit testing访问变得容易!