Ios 在swift4中设置和获取阵列时出现奇怪的东西
我正在使用一个类LocalSubject.swift,它存储在RealmDB中Ios 在swift4中设置和获取阵列时出现奇怪的东西,ios,realm,swift4,Ios,Realm,Swift4,我正在使用一个类LocalSubject.swift,它存储在RealmDB中 class LocalSubject: Object{ @objc dynamic var subjectName: String? private var modules: [Module] = [Module]() @objc dynamic var moduleArrayJSON: String? = nil public func addModule(module: Mod
class LocalSubject: Object{
@objc dynamic var subjectName: String?
private var modules: [Module] = [Module]()
@objc dynamic var moduleArrayJSON: String? = nil
public func addModule(module: Module){
modules.append(module)
}
public func setModules(modules: [Module]){
self.modules = modules
print("LocalSubject.swift > setModules() > " + String(describing: modules.count) + " > " + String(describing: self.modules.count))
}
public func getModules()-> [Module]{
print("LocalSubject.swift > getModules() > " + String(describing: modules.count) + " > " + String(describing: self.modules.count))
return modules.sorted(by: { $0.displayOrder! < $1.displayOrder!})
}
}
我无法理解这一点,这似乎很奇怪。
我缺少什么吗?领域对象不支持数组类型,您应该使用领域类型列表来维护对其他领域对象的引用。若模块不是领域对象子类,则不能存储对它的引用。请看这里: 因此有两种选择: 将modules属性更改为列表并在Realm中维护模块对象,或者 如果要存储JSON,是否需要存储modules属性?您可以继续只存储JSON字符串,并将模块设置为需要getter的计算属性,并且可以选择是否设置setter。
您必须根据您的用例选择前进的方向。什么是模块类型-这也是一个领域对象吗?数学对象是否由域管理,即存储在域中?感谢您的指导。我选择了第二种选择,一切都很顺利。
public func createModuleArrayFromJSONInSubjects(){
let modules = getModuleArrayFromJSON(moduleArrayJSON: (maths?.moduleArrayJSON)!)
for module in modules{
print("-> " + module.title!)
}
maths?.setModules(modules: modules)
for module in (maths?.getModules())!{
print("---> " + module.title!)
}
}