我有一个包含字典的数组。
在向数组添加新项时,我希望根据添加的键是否存在,将它们添加到顶部或更新字典。如果没有与该键对应字典,我想将其添加到顶部。否则,我想用这个键更新字典。
我们怎样才能在Objective-C中做到最好呢?
NSMutableArray * mediaData = [[NSMutableArray alloc] init];
for (int k=0; k<mediaData.count; k++)
{
NSDictionary *dict = [NSDictionary dictionaryWithObject: @"String1" forKey: @"Test"];
[mediaData add:dict];
}如果字典中存在上面的键(例如"String1"),我们如何更新字典值?如果不存在,如果带有键的字典在列表中不存在,我们如何将其附加到数组的顶部。
如果代码中有一些语法错误,请道歉。这只是为了让你明白问题是什么。
发布于 2013-07-08 19:09:58
好吧,这是未经测试的,有点笨拙,但我认为它符合您的要求:
MyList.h:
#import <Cocoa/Cocoa.h>
@interface MyList : NSObject {
NSMutableArray *_array;
}
- (void)addOrUpdateObject:(NSObject *)value
forKey:(NSString *)key;
@end然后,实现将类似于:
MyList.m:
#import "MyList.h"
@implementation MyList
- (id)init {
self = [super init];
if (self != nil) {
_array = [[NSMutableArray alloc] init];
}
return self;
}
- (void)addOrUpdateObject:(NSObject *)value
forKey:(NSString *)key {
for (NSUInteger i = 0; i < _array.count; i++) {
NSMutableDictionary *dict = [_array objectAtIndex:i];
NSArray *allKeys = [dict allKeys];
for (NSUInteger j = 0; j < allKeys.count; j++) {
NSString *existingKey = [allKeys objectAtIndex:j];
if ([existingKey isEqualToString:key]) {
[dict setObject:value forKey:key];
return; // Updated
}
}
}
// Key not found; create a new dictionary
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:value forKey:key];
[_array insertObject:dict atIndex:0];
}
@endhttps://stackoverflow.com/questions/17523607
复制相似问题