Nar*_*esh 2 iphone objective-c
嗨,在我的一个应用程序中,我有一个包含一组NSMutableDictionary对象的数组.字典对象有三个键值对,如下所示
并且阵列具有许多对象.现在,通过使用不同的添加按钮,我将这些字典对象添加到数组中.即使在向数组添加对象时,我也在使用NSNotFound方法检查是否有任何重复对象可用.如下
if([Array indexOfObject:dicObject] == NSNotFound)
{
[Array addObject:dicObject];
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下它在少数情况下工作正常,但它在其他情况下不起作用.我将用一个例子解释:
例如,我在阵列中有一个带有以下键值对的dicobject
company:XYZ Product:ABC Quantity:2
现在,例如,我想添加一个具有相同上述键值对的dic对象.那个时候显然它不会添加,因为已经有相同的产品在阵列中可用.
这是有效的条件.
例外情况:例如,我想添加一个具有以下值的产品
Company:XYZ Product:ABC Quantity:6
Run Code Online (Sandbox Code Playgroud)
在这种情况下,此产品将添加到阵列中,没有任何错误.但我担心的是我不想再将数据添加到数组中,只需要更新数量,因为公司和产品名称都是相同的.那么请告诉我处理这种情况的方法.
您可以indexOfObjectPassingTest:用来知道数组中是否已存在类似的字典.
这看起来像这样:
NSMutableArray *arr = // your array
NSDictionary *dicObject = // your object
NSUInteger indexOfDicObject = [arr indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop)
{
return ([obj[@"company"] isEqualToString:dicObject[@"company"]] &&
[obj[@"product"] isEqualToString:dicObject[@"product"]]);
}];
if (indexOfDicObject == NSNotFound)
{
[arr addObject:dicObject];
}
else
{
NSNumber *quantity = arr[indexOfDicObject][@"quantity"];
arr[indexOfDicObject][@"quantity"] = @([quantity intValue] + [dicObject[@"quantity"] intValue]);
}
Run Code Online (Sandbox Code Playgroud)
我做了以下假设:
company值是一个NSString;product值是一个NSString;quantity值是一个整数,存储在一个NSNumber.另请参阅trojanfoe的答案,如果您可以按类替换字典,则更好.
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |