簡體   English   中英

如何使用另一個結構的列表將結構保存到領域

[英]How to save struct to Realm, with list of another struct

我根據本指南在結構中創建了數據持久層,但我還需要使用結構創建一些領域對象並將其添加到結構中的另一個領域對象,如數組。 我的意思是這樣的:

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"
    }
}

在上面的指南中,作者只添加了另一個結構體,而不是數組。 我到了這一點:

extension Character: Persistable {
    public init(managedObject: CharacterObject) {
        identifier = managedObject.identifier
        name = managedObject.name
        realName = managedObject.realName
        publisherArray = managedObject.publisherArray
            .compactMap(Publisher.init(managedObject:))
    }
}

但我不知道,我必須在這里輸入什么:

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
        }

謝謝大家的幫助:-)

不要為您的每個結構制作重復的類,只需使用Unrealm ,它會為您處理一切。 只需讓您的結構/枚舉符合Realmable協議即可。 您不僅可以保存結構數組,還可以保存字典、可選類型、atc..

第一眼: 在此處輸入圖片說明

下面是一個如何實現持久化抽象層的示例項目:

鏈接到github

我終於解決了我的問題:-)

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
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM