Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Arrays 如何使用另一个结构的列表将结构保存到领域_Arrays_Swift_Struct_Realm - Fatal编程技术网

Arrays 如何使用另一个结构的列表将结构保存到领域

Arrays 如何使用另一个结构的列表将结构保存到领域,arrays,swift,struct,realm,Arrays,Swift,Struct,Realm,我根据在struct中创建了数据持久层,但我还需要使用struct创建一些领域对象,并将其添加到struct中的另一个领域对象,如array。我的意思是: public struct Publisher { public let identifier: Int public let name: String } public struct Character { public let identifier: Int public let name: String

我根据在struct中创建了数据持久层,但我还需要使用struct创建一些领域对象,并将其添加到struct中的另一个领域对象,如array。我的意思是:

public struct Publisher {
    public let identifier: Int
    public let name: String
}

public struct Character {
    public let identifier: Int
    public let name: String
    public let realName: String
    var publisherArray: [Publisher]
}

final class PublisherObject: Object {
    dynamic var identifier = 0
    dynamic var name = ""

    override static func primaryKey() -> String? {
        return "identifier"
    }
}

final class CharacterObject: Object {
    dynamic var identifier = 0
    dynamic var name = ""
    dynamic var realName = ""
    var publisherArray: List<PublisherObject>?

    override static func primaryKey() -> String? {
        return "identifier"
    }
}
但我不知道,我必须在这里输入什么:

public func managedObject() -> CharacterObject {
        let character = CharacterObject()
            character.identifier = identifier
            character.name = name
            character.realName = realName
            // here must be something like that, but for array
            // character.publisherArray = publisherArray.managedObject()
            return character
        }

谢谢大家的帮助:-)我终于解决了我的问题:-)


不要为每个结构创建重复的类,只需使用它就可以为您解决所有问题。只需使您的结构/枚举符合
realamable
协议即可。您不仅可以保存结构数组,还可以保存字典、可选类型等

第一眼:

下面是一个如何实现持久性抽象层的示例项目:


谢谢你给我展示了这个不错的扩展,当我创建这篇文章时,这个未读的扩展并不存在。我下次可能会用到这个:-)。
public func managedObject() -> CharacterObject {
        let character = CharacterObject()
            character.identifier = identifier
            character.name = name
            character.realName = realName
            // here must be something like that, but for array
            // character.publisherArray = publisherArray.managedObject()
            return character
        }
public func managedObject() -> CharacterObject {
        let character = CharacterObject()
            character.identifier = identifier
            character.name = name
            character.realName = realName
            publisherArray.forEach({ publisher in
                character.publisherArray.append(publisher.managedObject())
            })
            return character
        }