0

我目前正在使用两个 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,但我们会在本地库存中拥有它,因此产品没有更新)。

谢谢大家,节日快乐!

4

2 回答 2

0

对不起大家!我刚刚检查了我的代码,我忘记在 webservice-code 中删除这个愚蠢的调试 if-loop,它阻止了几个产品被添加到数组中。不过感谢您的帮助!

(我已经更新了主要帖子以反映这一点)

于 2012-12-18T14:38:04.863 回答
-1

请更改 isEqual 方法的实现方法并尝试。可能问题就在这里。从 if (![externalItemId isEqual:[otherProduct externalItemId]]) 返回 NO;

如果 (![externalItemId isEqualToString : [otherProduct externalItemId]]) 返回 NO;

于 2012-12-18T10:50:50.523 回答