我有NSArray
NSDictionaries
我需要提取2个值或从下面示例中的字典中删除我不需要的值我需要删除id和NumberValue。你们中的任何人都知道我该怎么做?
Array: (
{
customerUS= {
DisplayName = "level";
InternalName = "Number 2";
NumberValue = 1;
id = xwrf
},
customerCAN= {
DisplayName = "PurchaseAmount";
InternalName = "Number 1";
NumberValue = 3500;
id = adf;
};
}
)
我真的很感谢你的帮助。
答案 0 :(得分:1)
我建议你阅读Apple文档。
要在创建任何Collection对象后修改它,您需要可变版本。
对于NSDictionary
,我们有NSMutableDictionary
。阅读here。
我们有一种删除对象的方法:
- (void)removeObjectForKey:(id)aKey
还有其他方法。您可以在上述文档中轻松引用它们。
答案 1 :(得分:1)
首先,您无法删除/插入/更新 (不可变) NSDictionary/NSArray
中的值,您需要将NSDictionary/NSArray
转换为(可变) NSMutableDictionary/NSMutableArray
。
如
NSArray *myArr = ....;
NSMutableArray *newMutableArr = [myArr mutableCopy];
然后您可以更改 newMutableArr 。
如此
for(int i = 0 ; i < newMutableArr.count ; i ++)
{
[[newMutableArr objectAtIndex:i] removeObjectForKey:@"id"];
[[newMutableArr objectAtIndex:i] removeObjectForKey:@"NumberValue"];
}
<强>编辑:强>
不使用for loop
和removeObjectForKey
,如果你有字典数组并且两者都是可变的,那么你也可以从数组的所有元素中删除一个键及其对象,如下所示:
[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"id"];
[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"NumberValue"];
答案 2 :(得分:0)
找出removeObjectForKey以从NSMutabledictionary中删除记录。
removeObjectForKey传递键值,无论你喜欢什么
这一切都是你的关键 的 DisplayName的, INTERNALNAME, NumberValue, ID 强>
喜欢这个
removeObjectForKey:@"id";
答案 3 :(得分:0)
首先,你必须将数组转换为可变数组,然后你可以从字典中删除键值对。
NSMutableArray *mutableArray = [yourArray mutableCopy];
for(int i=0;i<mutableArray.count;i++){
NSMutableDictionary *outerDictionary = [mutableArray objectAtIndex:i];
for(NSString *key in outerDictionary.allKeys){
NSMutableDictionary *innerDictionary = [outerDictionary objectForKey:key];
[innerDictionary removeObjectForKey:@"id"];
[innerDictionary removeObjectForKey:@"NumberValue"];
} }