у меня есть это определение Realm модели:App падает или зависает при анализе моделей Realm
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
На данный момент пустые таблицы не влияют на производительность. Не могли бы вы объяснить немного больше, почему вы хотите избежать его в схеме? – yoshyosh
На самом деле нет никакого обоснования. Просто не имеет права иметь таблицу, которая не получит никаких значений за всю свою жизнь. Еще раз спасибо. – Thanos