gpt4 book ai didi

ios - 合并两个相同类型的对象

转载 作者:行者123 更新时间:2023-11-29 10:36:07 24 4
gpt4 key购买 nike

我有两个对象:

deviceConfigInfodeviceStatusInfo

两者都包含一个 devices 数组(所以实际上还有第三个 device 对象)。

对于 deviceConfigInfo 中返回的每个 device 都有这些属性:

  • uuid
  • 姓名
  • somethingElse
  • lookAnotherOne

deviceStatusInfo

  • uuid
  • 姓名
  • somethingElse
  • 一些状态信息
  • someMoreStuff

(如果你没猜到的话,我只是编造了一些随机属性)

回到我提到的第三个对象,device,我创建它时结合了所有属性。现在,我的问题是,假设 deviceStatusInfo 得到更新,我如何更新 device 对象而不丢失未被覆盖的“旧”数据(在这种情况下, lookAnotherOne 属性)。

是否必须手动获取具有匹配 uuid 的设备,然后更新 deviceStatusInfo 的每个属性,或者是否有更快的方法这?想象一下有很多属性。

希望这是有道理的。如果有帮助,我正在使用 Mantle创建对象/模型。

最佳答案

我注意到 Mantle 具有以下我可以使用的功能:

mergeValueForKey:fromModel:

所以在我的 device 模型中,我添加了两个函数:

  • mergeConfigInfoKeysFromModel:
  • mergeStatusInfoKeysFromModel:

这些函数可以访问一个数组,该数组包含表示属性/键的 NSString 值。 configInfo 有一个数组,statusInfo 属性/键有另一个数组。

然后我遍历键并使用 valueForKey 来检查它是否具有实际值。如果是,我会调用 mergeValueForKey:fromModel:

示例代码:

- (void)mergeConfigInfoKeysFromModel:(MTLModel *)model
{
NSArray *configInfoKeys = @[@"uuid", @"name", @"somethingElse", @"lookAnotherOne"];

for (NSString *key in configInfoKeys) {
if ([model valueForKey:key]) {
[self mergeValueForKey:key fromModel:model];
}
}
}

我现在要做的就是在获得更新时在 device 对象上调用适当的合并函数,传递更新后的 device 对象。如下所示:

[self.device mergeConfigInfoKeysFromModel:deviceUpdate];

关于ios - 合并两个相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26999342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com