我目前正在使用两个 JSON Web 服务来异步填充两个单独的 NSMutableArrays。
本地库存和供应商库存
第一个网络服务检索本地库存,另一个检索供应商库存。所以在两个数组被填满之后,我运行一个-(void)compareArrays
函数dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
自定义对象
我使用自定义对象来存储来自 web 服务的数据。每个对象代表一个产品。
每个 Web 服务的不同键(相同(类型)值)
由于两个 web 服务返回不同命名的键值对(因为一个返回其键是荷兰语,另一个是英语)我有两个对象的解析函数。解析不同的Web服务时基本上[dictionary objectForKey:@"property"]
是不同的,但它设置的属性是相同的。
使用供应商库存信息更新本地库存信息
供应商网络服务还返回由本地库存网络服务返回的产品。本地产品的某些属性必须由供应商网络服务更新,我正在努力使其工作。
现在这适用于很多产品,但有些产品不知何故不会触发 if 循环。我检查了 JSON 结果,并将产品的本地版本和供应商版本都放在了 NSLog 中:它们的哈希值和 externalItemId 是相同的。
这个对象不知何故没有通过 if 循环,即使在创建之后,externalItemId 也被设置为“artikelsysteemnummer”的值,这是供应商 Web 服务的 externalItemId 的键。它们的哈希值也相同。
有人知道哪里可能出错吗?因为我看到 MergeArrays 函数跳过了这个产品,并且总价格保持为 0 而不是 13100。
提前致谢!
更新
我再次检查了我的代码,在 WebService 代码中,有一个小调试代码卡在那里,说如果供应商库存为 0,则不要将产品添加到数组中。虽然我忘了删除它(因为某些供应商的库存可能会返回 0,但我们会在本地库存中拥有它,因此产品没有更新)。
谢谢大家,节日快乐!