在iOS中在域中添加数据时出现问题
我是使用领域的新手,我正在尝试将我的api响应保存在领域数据库中。为此,我读取了这些文档并开始了我的工作,我创建了一个对象类,其中有一个变量,当我在realm应用程序中添加数据时,我现在想在其中保存数据,但出现错误,在iOS中在域中添加数据时出现问题,ios,swift,realm,Ios,Swift,Realm,我是使用领域的新手,我正在尝试将我的api响应保存在领域数据库中。为此,我读取了这些文档并开始了我的工作,我创建了一个对象类,其中有一个变量,当我在realm应用程序中添加数据时,我现在想在其中保存数据,但出现错误,Thread 1:Fatal error:在展开可选值时意外发现nil。这是我的对象类 class SingleChatRealm: Object { var actualNameFor_1_2_1_chat = "" var isGroup : Bool = true var
Thread 1:Fatal error:在展开可选值时意外发现nil
。这是我的对象类
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)
上崩溃,上面给出了错误,为什么会这样?这里面我缺了什么 您刚刚创建了一个新的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)
}
}
可能有几个原因
@objc dynamic var
realm
对象在类中是全局对象,否则从self.realm.add(newListing)
中删除self
newListing
变量的所有值都不是nil
(已使用一些默认值启动的变量)TCHChannel
、TCHMember
和TCHMessage
的实际数据类型是什么?领域
可能不支持这些类型SingleChatRealm
类结构。在这种情况下,您必须删除旧的.realm
文件并创建一个新文件我已经运行了您的代码。我的应用程序因此错误而崩溃,由于未捕获的异常“RLMException”而终止应用程序,原因是:“表中没有列。”@你可以在这里看到答案:。您应该在领域对象中用'dynamic'关键字标记持久化属性。当我使用dynamic时,它会显示错误'dynamic'var'twChannelObj'也必须是'@objc'@VSNV当我使用objc动态变量设置变量时,这些变量应该是@objc dynamic var name=“”。它显示错误,由于未捕获的异常“RLMException”而终止应用程序,原因是:“属性“twChannelObj”声明为“TCHChannel”,这不是受支持的RLMObject属性类型。所有属性都必须是原语、NSString、NSDate、NSData、NSNumber、RLMArray、RLMLinkingObject或RLMObject的子类@杰思:没错。Realm支持列出的对象类型,无法管理其他类型的对象。首先,请参阅领域文档,在添加数据之前,我不会修改领域,其次,它在类中是全局的,这些TCHChannel、TCHMember和TCHMessage数据类型是twilio第三方库的类,基类为NSObject。在这些类数据类型中出现了一个问题,如何解决这个问题@Pritam HazraRealm支持boolean、byte、short、int、long、float、double、String、Date和byte[]字段类型。NSObject引用无法保存在域上。尝试以任何给定格式保存来自TCHChannel、TCHMember和TCHMessage的特定数据。我的意思是不存储孔对象,只是尝试存储特定的属性@JunaidKhanbut然后我希望稍后在TCHMember数组中显示表视图中的数据@Pritam HazraSee此链接:。TCHMember由这些参数组成。只需单独保存这些参数。为了显示make TCHMember对象从realm获取参数,我已经在realm中存储了TCHMember和TCHMessage参数,现在我应该为TCHMember创建realm对象类并在其中获取这些参数@普里塔姆·哈兹拉