2016-05-11 3 views
1

私はすでに似たような回答(例えば、this)を読んでいますが、それは私のためには機能しませんでした。レルム0.102.0 save RLMArray

は私が持っている:

// Helper for getting the list object for a property 
internal func listForProperty(prop: RLMProperty) -> RLMListBase { 
    return object_getIvar(self, prop.swiftIvar) as! RLMListBase 
} 

と::

import Realm 
import RealmSwift 

class Ticket: Object { 

    dynamic var ticketDetails = RLMArray(objectClassName: TicketDetail.className()) 

} 

class TicketDetail: Object { 
} 

私は、この行では、アプリのクラッシュ新しいチケットを作成

コンソールで

fatal error: unexpectedly found nil while unwrapping an Optional value

私は印刷する "小道具" :

po prop 
ticketDetails { 
    type = array; 
    objectClassName = TicketDetail; 
    linkOriginPropertyName = (null); 
    indexed = NO; 
    isPrimary = NO; 
    optional = NO; 
} 

私は "自己" 印刷する場合:

Ticket { 
    ticketDetails = RLMArray <0x7fee6c1d7880> (
    [0] TicketDetail { 
    } 
    );  
} 

だから何を?なぜクラッシュするのか分かりません!誰か助けてくれますか?

答えて

2

Realm Swift API(Object)とRealm Objective-C API(RLMArray)のタイプは、サポートされていない方法で混合しています。あなたが1つのAPIだけを使用することに固執すれば、より良い運を得られます。私が知っていると私はいつもあなたの方法を試すが、この署名が、私はそのタイプは表現できないので、コンパイルエラー「プロパティが動的にマークすることができない持って

import RealmSwift 

class Ticket: Object { 
    let ticketDetails = List<TicketDetail>() 
} 

class TicketDetail: Object { 
} 
+0

:としてたとえば、レルムスウィフトとあなたのモデルを記述しますin-Objective-c」を参照してください。私は永続化するためにプロパティの動的を宣言する必要がありますか?この答えは –

+0

+1です。レルムのAll SwiftクラスまたはAll ObjCクラスを使用する必要があります。 SwiftプロジェクトでSwiftクラスを使うのが好きです。 – mro

+0

@LucaDavanzoあなたはObjectiveC型の 'dynamic'宣言しかできません。' List'は純粋なSwiftオブジェクトです。 'dynamic'修飾子を使う必要はありません。それはRealmによって永続化されます。 – mro