【问题标题】:Class are being linked more than once in target类在目标中被链接不止一次
【发布时间】:2015-06-23 12:31:06
【问题描述】:

我有两个目标 appappTests。我也有类Wine 和框架Realm 和'RealmSwift',它们与这两个目标相关联。当我在 traget app 中使用类 Wine 时也不例外。

但是当我想像这样运行测试时

appTests.swift(22 行)

import UIKit
import XCTest
import RealmSwift

class appTests: XCTestCase {
func testRealmAdd() {
         NSFileManager.defaultManager().removeItemAtPath(Realm.defaultPath, error: nil)
        let realm = Realm()
        let wine = Wine() // when error occure
        wine.photo = "photo"
        wine.desc = "description"
        wine.raiting = 3.0

        realm.write { () -> Void in
            realm.add(wine)
        }

        let result = realm.objects(Wine)
        print("\(result)")
        XCTAssertTrue(result.count == 1, "There should be one element")
    }
}

Wine.swift(10 行)

import UIKit
import RealmSwift

class Wine: Object {

    dynamic var desc: String = ""
    dynamic var photo: String = ""
    dynamic var raiting: Double = 0

}

然后appTests.swift的第8行出现异常

同名的 RLMObject 子类不能在同一个目标中包含两次。请确保“Wine”仅与您当前的目标链接一次。

我已经清除了 DerivedData 和项目。你能建议我去哪里看吗?

在 nhgrif 评论后编辑

好的,第 7 行中似乎出现了一个异常。由于 nhgrif,现在在代码中标记了该异常。

【问题讨论】:

  • 第 8 行是哪一行?这可能与源代码无关,而是与您如何将框架链接到项目有关。
  • @nhgrif 我添加了教程中提到的那些框架 realm.io/docs/swift/latest/#getting-started ,然后我将 Realm.frameworkRealmSwift.frameworkWine.swift 标记为在 Target Membership

标签: ios xcode swift unit-testing realm


【解决方案1】:

Wine.swift 只能在app 中,而不是appTests。将它包含在两个结果中会导致 appTests 有两个名为 Wine 的类(app.WineappTests.Wine),这不是 Realm 支持的。只要Winepublic(或在Swift 2.0 中,@Testable),您就可以从appTests 访问它,而无需将其包含在appTests 目标中,因为appTests 链接在app 中。

【讨论】:

  • 我还必须公开每个将在测试中使用的函数和属性。更重要的是我必须添加import app。我等不及 Swift 2.0 了 :)
猜你喜欢
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多