gpt4 book ai didi

ios - 在 swift 3 中从字符串实例化 Realm 对象

转载 作者:行者123 更新时间:2023-11-28 06:21:23 25 4
gpt4 key购买 nike

我想知道是否可以根据 Realm 对象的类名字符串来实例化 Realm 对象,但在提供之前不知道该字符串是什么。

例如:

for(_, object) in json["AllObjects"]{
let objectType = self.getRealmObjectBasedOnString(type: className, params: object.stringValue)
self.objectList.append(objectType)
}

在这里,我遍历了一个我得到的 json,并希望从数组中的每个 json 对象创建一个 Realm 对象。问题是这个方法将被调用多次,每次唯一会改变的是 className 变量。所以我想只在一个方法中保留这个逻辑,而不是创建多个具有相同逻辑的方法,或者一个庞大而复杂的 if else 来确定要创建的 Realm 对象。

这里是getRealmObjectBasedOnString

func getRealmObjectBasedOnString(type: String, params: String) -> Object{
switch type {
case "classA":
return ClassA(JSONString: params)!
case "classB":
return ClassB(JSONString: params)!
default:
return DefaultClass(JSONString: params)!
}
}

有人可以解释为什么这不起作用以及是否有可能实现我想要的?

最佳答案

您可以使用 NSClassFromString 从字符串中获取 Realm 对象类型,但请记住,Swift 使用模块进行 nemespacing,因此您需要在类名之前添加应用的模块名。

guard let objectType = NSClassFromString("YourAppModuleName.\(json["className")") else {
// handle unexpected class here
}

let objectList = realm.objects(objectType)

关于ios - 在 swift 3 中从字符串实例化 Realm 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43327821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com