Проблема с добавлением данных в Realm в iOS - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в использовании областей, я пытаюсь сохранить ответ API в базе данных областей.Для этого я прочитал там документы и начал свою работу. Я создал класс Objects, в котором есть мои переменные, в которые я хочу сохранять данные сейчас, когда я добавляю данные в приложение realm, вылетает с ошибкой Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value.Это мой класс объектов,

class SingleChatRealm: Object {

var actualNameFor_1_2_1_chat = ""
var isGroup : Bool  = true
var isNewGroup : Bool = false
var lastMessage = ""
var lastMsgRead : Bool = false
var lastMsgTime = ""
var lastMsgTimeActual = ""
var name = ""
var profilePic = ""
var roomSID = ""
var unReadMsgsCount = 0
var twChannelObj : TCHChannel?
var members = [TCHMember]()
var messages = [TCHMessage]()
// @objc dynamic var group_info : [String:JSON]?

}, и вот как я храню данные в области,

 let realm = try! Realm()

        try! realm.write {

            let newListing = SingleChatRealm()

            for items in dateWiseSortedSingleRooms
            {
                newListing.actualNameFor_1_2_1_chat = items.actualNameFor_1_2_1_chat
                newListing.isGroup = items.isGroup
                newListing.isNewGroup = items.isNewGroup
                newListing.lastMessage = items.lastMessage
                newListing.lastMsgRead = items.lastMsgRead
                newListing.lastMsgTime = items.lastMsgTime
                newListing.lastMsgTimeActual = items.lastMsgTimeActual
                newListing.members = items.members
                newListing.messages = items.messages
                newListing.name = items.name
                newListing.profilePic = items.profilePic!
                newListing.roomSID = items.roomSID
                newListing.twChannelObj = items.twChannelObj
                newListing.unReadMsgsCount = items.unReadMsgsCount
                print(newListing)
                self.realm.add(newListing)
            }
        }

Мое приложение вылетает на этой строке self.realm.add(newListing) с указанным вышеошибка, почему так?что мне не хватает в этом?

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

Для этого может быть несколько причин:

  1. Сделайте все переменные @objc dynamic var.
  2. Убедитесь, что ваш объект realm является глобальным в классе, в противном случае удалите self из self.realm.add(newListing).
  3. Убедитесь, что все значения, которые вы присваиваете переменным newListing, не nil (те переменные, которые вы уже инициировали с некоторыми значениями по умолчанию).
  4. Каков фактический тип данных TCHChannel, TCHMember и TCHMessage?Эти типы могут не поддерживаться Realm.
  5. . Убедитесь, что вы не изменили структуру класса SingleChatRealm после добавления записи в область.В этом случае вы должны удалить старый файл .realm и создать новый.
0 голосов
/ 05 марта 2019

Вы только что создали новый экземпляр Realm, но self.realm по-прежнему равен нулю, вам следует добавить строку:

self.realm = realm

в ваш код:

let realm = try! Realm()

self.realm = realm

    try! realm.write {

        let newListing = SingleChatRealm()

        for items in dateWiseSortedSingleRooms
        {
            newListing.actualNameFor_1_2_1_chat = items.actualNameFor_1_2_1_chat
            newListing.isGroup = items.isGroup
            newListing.isNewGroup = items.isNewGroup
            newListing.lastMessage = items.lastMessage
            newListing.lastMsgRead = items.lastMsgRead
            newListing.lastMsgTime = items.lastMsgTime
            newListing.lastMsgTimeActual = items.lastMsgTimeActual
            newListing.members = items.members
            newListing.messages = items.messages
            newListing.name = items.name
            newListing.profilePic = items.profilePic!
            newListing.roomSID = items.roomSID
            newListing.twChannelObj = items.twChannelObj
            newListing.unReadMsgsCount = items.unReadMsgsCount
            print(newListing)
            self.realm.add(newListing)
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...