Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift4中设置和获取阵列时出现奇怪的东西_Ios_Realm_Swift4 - Fatal编程技术网

Ios 在swift4中设置和获取阵列时出现奇怪的东西

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

我正在使用一个类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: 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!)
            }
  }