如何在iOS swift中使用RealmSwift创建类似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

我一直在尝试创建类似firebase数据库结构的模型。我可以创建普通字符串、bool和int值,但不能创建数组和字典

以下是我的firebase结构截图:

在这里,我试图添加组成员到类似firebase结构的模型中

以下是我尝试使用数组和字典创建的模型:

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这样的领域数据库中获取groupmembersto结构。如何在领域中创建数组和字典有很多解决方案,但这里有两个

假设已读入数据,并且来自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)
    }
}