Обновление одного ключа в области в массив модели в массив модели - PullRequest
0 голосов
/ 29 мая 2018

Я столкнулся с проблемой, я хочу обновить один ключ в моей модели области, который находится в иерархии ниже.

Array Model -> Array Model - Key

class OrdersOfDeliveryModel: Object, Mappable {

dynamic var id : String?
dynamic var transportCost : String?

var items = List<ItemsModel>()

    required convenience init?(map: Map) {
        self.init()
    }

    override class func primaryKey() -> String? {
        return "id"
    }

    func mapping(map: Map) {
        id                  <- map["id"]
        transportCost       <- map["transportCost"]
        items               <- (map["items"], ListTransform<ItemsModel>())
    }
}

class ItemsModel : Object, Mappable{

dynamic var orderedQty  : Int = 0
dynamic var orderedReceivedQty  : String?

    required convenience init?(map: Map) {
        self.init()
    }

    override class func primaryKey() -> String? {
        return nil
    }

    func mapping(map: Map) {

        var dictWeightageqty = [String:Any]()
        dictWeightageqty     <- map["weightageQty"]
        orderedQty          = dictWeightageqty["ordered"] as? Int ?? 0
        orderedReceivedQty  = dictWeightageqty["received"] as? String
    }
}

Пожалуйста, рассмотрите этот пример.

Я хочу обновитьorderedReceivedQty ключ, который находится в ItemsModel, но как я могу найти этот ключ в области.Но мой ItemsModel зависит от OrderOfDeliveryModel, который я могу найти с помощью первичного ключа.

У меня есть способы, как удалить всю эту модель, используя один идентификатор, и заменить ее новыми данными, ИЛИ я могу получить этот ключ иобновите его.

Я не хочу удалять весь объект и вставлять новый. Я хочу обновить один ключ.

Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 29 мая 2018

Если у вас есть объект OrderOfDeliveryModel, вы можете запросить его для объекта ItemsModel, который хотите обновить, а затем обновить его на месте (если вы его найдете).

let results = myOrders.items.filter("orderedQty == %@", 10)
if (results.count == 1) {
    results[0].orderedReceivedQty = 10
}
...