2016-05-11 66 views
1

我已經閱讀了類似的答案(例如this),但它不適用於我。領域0.102.0保存RLMArray

我:

import Realm 
import RealmSwift 

class Ticket: Object { 

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

} 

class TicketDetail: Object { 
} 

當我創建一個新的票,應用程序崩潰,在這條線:

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

有:

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)的類型。如果你堅持只使用一個API,你會有更好的運氣。例如,對於域斯威夫特你會寫你的模型:

import RealmSwift 

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

class TicketDetail: Object { 
} 
+0

我知道,我總是用你的方法試試,但與此簽名我有一個編譯錯誤「屬性不能標記爲動態的,因爲它的類型無法表示在Objective-c「中。我需要聲明屬性動態才能被持久化,不是嗎? –

+0

+1這個答案。你應該使用Realm的All Swift或All ObjC類。我更喜歡使用Swift類的Swift類。 – mro

+0

@LucaDavanzo你只能爲ObjectiveC類型聲明'dynamic','List'是一個純Swift對象,不需要使用'dynamic'修飾符。它會被Realm堅持得很好。 – mro