gpt4 book ai didi

iphone - cocoa 和 cocoa touch : is an object on the dictionary?

转载 作者:行者123 更新时间:2023-12-03 16:49:22 26 4
gpt4 key购买 nike

我认为查找字典中的对象是否会更简单,但看起来并非如此。

我有一个 NSMutableDictionary,只有一个名为“products”的键。

我有几个产品动态添加到字典中,使用类似的东西

[myDict addObject:@"banana" forKey:@"products"];
[myDict addObject:@"orange" forKey:@"products"];
[myDict addObject:@"grapes" forKey:@"products"];

等等

有时我想知道字典中是否有“香蕉”。

有办法做到这一点吗?我的意思是,只是想知道一个对象是否在字典中?

感谢您的帮助。

最佳答案

您误解了字典的工作原理。字典为单个键存储一个单个值。因此,在代码运行后,myDict 将保存一个键值对:@"products" => @"grapes"。如果您需要一个键来指向多个对象,那么您的键将需要指向一个 NSMutableArray (或者 NSMutableSet 如果您不关心顺序),然​​后您可以从 NSMutableArray 而不是字典中添加和删除内容。

如果这将成为字典中所有内容的基本结构,您可能需要考虑为字典制作一个包装器,如下所示:

//DDMutableMultiValueDictionary.h
@interface DDMutableMultiValueDictionary : NSObject {
NSMutableDictionary * dict;
}

- (void) addObject:(id)value forKey:(id)key;
- (void) removeObject:(id)value forKey:(id)key;
- (BOOL) containsObject:(id)value forKey:(id)key;

@end

//DDMutableMultiValueDictionary.m
#import "DDMutableMultiValueDictionary.h"

@implementation DDMutableMultiValueDictionary

- (id) init {
if (self = [super init]) {
dict = [[NSMutableDictionary alloc] init];
}
return self;
}

- (void) dealloc {
[dict release];
[super dealloc];
}

- (void) addObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
if (values == nil) {
values = [NSMutableArray array];
[dict setObject:values forKey:key]
}
[values addObject:value];
}

- (void) removeObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
[values removeObject:value];
}

- (BOOL) containsObject:(id)value forKey:(id)key {
NSMutableArray * values = [dict objectForKey:key];
return [values containsObject:value];
}

@end

这无论如何都不完整,但它让您了解如何实现它。

关于iphone - cocoa 和 cocoa touch : is an object on the dictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com