在iOS中的Realm中添加数据的问题

时间:2019-03-05 14:37:35

标签: ios swift realm

我是使用领域的新手,我试图将我的api响应保存在领域数据库中。为此,我阅读了文档并开始工作,我创建了Objects类,其中有我的变量,当我在领域应用程序中添加数据时因错误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 个答案:

答案 0 :(得分:2)

可能有几个原因,

  1. 设置所有变量@objc dynamic var
  2. 请确保您的realm对象在该类中是全局对象,否则请从self中删除self.realm.add(newListing)
  3. 确保您要分配给newListing变量的所有值都不是nil(那些已经使用一些默认值初始化的变量)。
  4. TCHChannelTCHMemberTCHMessage的实际数据类型是什么? Realm可能不支持这些类型。
  5. 确保在向领域添加条目后没有修改SingleChatRealm类结构。在这种情况下,您必须删除旧的.realm文件并创建一个新文件。

答案 1 :(得分:0)

您刚刚创建了Realm的新实例,但是self.realm仍然为nil,您应该添加以下行:

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)
        }
    }