0
我有这样的境界模型定义时:应用程序崩溃或死机解析领域模型
class PSTChatThread: RLMObject {
dynamic var channelName = ""
dynamic var environment = RLMObject(object: PSTChannelEnv.className())
dynamic var chatMessages = RLMArray(objectClassName: PSTMessage.className())
}
class PSTChannelEnv: RLMObject {
dynamic var associatedPlaceId = 0
dynamic var chattingWithUuid = ""
dynamic var chattingWithUsername = ""
dynamic var hasSessionEnded = false
dynamic var unreadMessages = 0
}
class PSTMessage: RLMObject {
// type
dynamic var typeRaw = ""
var type: PSTProtocolMsgTypes {
get {
if let a = PSTProtocolMsgTypes(rawValue: typeRaw) {
return a
}
return .ChatMsg
}
}
// envelope
dynamic var channel = ""
dynamic var timeoken = 0
}
class ChatMsg: PSTMessage {
dynamic var msgId = ""
dynamic var text = ""
dynamic var username = ""
dynamic var uuid = ""
dynamic var associatedPlaceId = -1
}
class ACKMsg: PSTMessage {
dynamic var forId = ""
dynamic var uuid = ""
}
class UserTypingMsg: PSTMessage {
dynamic var uuid = ""
}
class UserStoppedTypingMsg: PSTMessage {
dynamic var uuid = ""
}
class SessionUpdateMsg: PSTMessage {
dynamic var hasSessionEnded = false
dynamic var uuid = ""
}
class ContactDetailsMsg: PSTMessage {
dynamic var accessLevel = -1
dynamic var uuid = ""
}
class ReadReceiptMsg: PSTMessage {
dynamic var uuid = ""
}
- 当我运行的应用程序,它崩溃的:
prop.column = table.add_column_link(tightdb::DataType(prop.type), prop.name.UTF8String, *linkTable);
与EXC_BAD_ACCESS
- 在假设模型解析从顶部到底部,如果我将
PSTChatThread
移动到底部,应用程序会冻结。没有崩溃或任何事情,只是变得没有反应。
看起来有PSTChatThread
定义的问题。如果这被注释掉,一切似乎都正常工作。
每当我对模型进行RMRealm
调用或任何其他查询调用时都会发生这种情况。
如果我的子类逻辑,我想问一件事。 PSTMessage
没有任何方法持久化到模式,但只有它的子类可以吗?
感谢
感谢哥们,那是非常有帮助的。你对我的子问题有答案吗?也就是说,如果我可以避免在架构中插入超类“PSTMessage”作为表。 – Thanos 2015-02-06 19:51:16
目前还不是,空表虽然没有任何性能影响。你能否解释一下为什么你想避免在模式中使用它? – yoshyosh 2015-02-06 21:08:37
实际上没有理由。只是不觉得有一张桌子在一生中不会有任何价值。再次感谢。 – Thanos 2015-02-06 21:20:22