2015-06-23 24 views
6

Ich habe zwei Ziele app und appTests. Auch ich habe Klasse Wine und Framework Realm und 'RealmSwift', die mit diesen beiden Zielen verknüpft sind. Es gibt keine Ausnahme, wenn ich Klasse Wine in traget app verwende.Klasse wird mehr als einmal in Ziel verknüpft

Aber wenn ich will

appTests.swift (22 Zeilen) -Test wie

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 Zeilen) ein

import UIKit 
import RealmSwift 

class Wine: Object { 

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

} 

Dann laufen Ausnahme erscheint bei Zeile 8 in appTests.swift

RLMObject-Unterklassen mit demselben Namen können nicht zweimal in dasselbe Ziel eingeschlossen werden. Bitte stellen Sie sicher, dass "Wein" nur einmal mit Ihrem aktuellen Ziel verknüpft ist.

Ich habe bereits DerivedData und Projekt gelöscht. Können Sie mir vorschlagen, wo ich hinschauen sollte?

EDIT nach nhgrif Kommentar

Ok scheint es, dass eine Ausnahme früher steigt, in Zeile 7, die nun in Code dank nhgrif gekennzeichnet ist.

+0

Welche Linie ist Linie 8? Dies hat wahrscheinlich nichts mit dem Quellcode zu tun, sondern damit, wie Sie die Frameworks mit den Projekten verknüpfen. – nhgrif

+0

@nhgrif Ich füge diese Frameworks wie Tutorial, sagte https://realm.io/docs/swift/latest/#getting-started, und dann markierte ich 'Realm.framework',' RealmSwift.framework' und 'Wine.swift' Wie für das Ziel "appTests" in ** Target-Mitgliedschaft ** –

Antwort

1

Wine.swift sollte nur in app sein, und nicht appTests. Inklusive in beiden Ergebnissen in appTests mit zwei Klassen namens Wine (app.Wine und appTests.Wine), die nicht etwas ist, das Realm unterstützt. Solange Winepublic (oder in Swift 2.0, @Testable) ist, können Sie von appTests darauf zugreifen, ohne es in das appTests Ziel zu integrieren, da appTests Links in app.

+0

überprüft Ich muss auch alle Funktionen und Eigenschaften, die im Test verwendet werden. Außerdem muss ich eine Import-App hinzufügen. Ich kann nicht auf Swift 2.0 warten :) –

Verwandte Themen