如何在iOS swift中使用RealmSwift创建类似firebase结构的模型?
我一直在尝试创建类似firebase数据库结构的模型。我可以创建普通字符串、bool和int值,但不能创建数组和字典 以下是我的firebase结构截图: 在这里,我试图添加组成员和到类似firebase结构的模型中 以下是我尝试使用数组和字典创建的模型:如何在iOS swift中使用RealmSwift创建类似firebase结构的模型?,ios,arrays,swift,dictionary,realm,Ios,Arrays,Swift,Dictionary,Realm,我一直在尝试创建类似firebase数据库结构的模型。我可以创建普通字符串、bool和int值,但不能创建数组和字典 以下是我的firebase结构截图: 在这里,我试图添加组成员和到类似firebase结构的模型中 以下是我尝试使用数组和字典创建的模型: import Foundation import RealmSwift class RealmMessages: Object { @objc dynamic var messageText : String? @objc dynami
import Foundation
import RealmSwift
class RealmMessages: Object {
@objc dynamic var messageText : String?
@objc dynamic var sender: String?
let chatCreatedDateTimee = List<timeStampValue>()
@objc dynamic var chatId: String?
@objc dynamic var from: String?
@objc dynamic var groupMemberss : [String: String]!
let groupMemebersCount = RealmOptional<Int>()
@objc dynamic var task: Bool = false
@objc dynamic var to: Array = [String]()
}
class timeStampValue: Object {
let timestamp = RealmOptional<Int>()
}
如何在像firebase这样的领域数据库中获取groupmembers和to结构。如何在领域中创建数组和字典有很多解决方案,但这里有两个 假设已读入数据,并且来自groupMembers快照的数据位于字典变量中,如下所示
let groupMembersDict = [
"919": "participant",
"111": "observer",
"222": "participant"
]
要将其存储在领域中,您可以使用原语并将每个键和值存储在单独的列表中(想想:数组),也可以利用托管领域对象并将其存储在列表中
如果要将数据保存在对象中;下面是它的样子
class GroupData: Object {
@objc dynamic var num = ""
@objc dynamic var type = ""
convenience init(withNum: String, andType: String) {
self.init()
self.num = withNum
self.type = andType
}
}
这是显示两个选项的主要对象;选项1:将键值对存储在两个数组中,或者选项2:使用上面的GroupData对象将键值对存储在一起
class Messages: Object {
@objc dynamic var messageText = ""
//option 1: two lists of primative strings that can be accessed like an array.
// downside is managing two lists
let groupNum = List<String>()
let groupType = List<String>()
//option 2: a list of members using another Realm object
let groupNumType = List<GroupData>()
}
将它们存储在域中
realm.add(msg0)
realm.add(msg1)
在显示选项2中的消息时读取这两个选项。选项1只是迭代数组以打印组数据
let messageResults = realm.objects(Messages.self)
for msg in messageResults {
print(msg.messageText)
for group in msg.groupNumType {
print(group.num, group.type)
}
}
请记住,所有托管属性都必须是原语:NSString、NSDate、NSData、NSNumber或List、Results、RLMLinkingObject或RLMObject的子类,如上图所示的GroupData。Sry用于延迟响应。。谢谢你的回答。我会尽快给你回电话。。
realm.add(msg0)
realm.add(msg1)
let messageResults = realm.objects(Messages.self)
for msg in messageResults {
print(msg.messageText)
for group in msg.groupNumType {
print(group.num, group.type)
}
}