gpt4 book ai didi

objective-c - Cocoa 中的双向映射

转载 作者:太空狗 更新时间:2023-10-30 03:25:50 27 4
gpt4 key购买 nike

Cocoa 提供了 NSDictionary,本质上是一个关联数组。

是否有获得双向关联性的好方法?也就是说,如果 NSDictionary 有一个 keyForObject: 方法,它会反射(reflect) objectForKey: 的行为。

我真的不在乎 NSDictionary 是否不是获取它的方法。我知道 NSDictionary does 提供 keysOfEntriesPassingTest: 但它返回一个 NSSet * 对于我想要的那种东西看起来不太干净.

这是一个例子:

fieldMap = [[NSDictionary alloc] initWithObjectsAndKeys:
@"c0",@"synckey",
@"c1",@"wi_id",
@"c2",@"wi_parent_id",
@"c3",@"wi_type",
@"c4",@"wi_rh_task",
@"c5",@"decision_key",
@"c6",@"wi_stat",
@"c7",@"wi_prio",
@"c8",@"wi_cd",
@"c9",@"wi_ct",
@"cb",@"wi_dh_stat",
@"cc",@"wi_user",
nil];

我想在 c0synckey 之间来回转换,其他字段也一样。

最佳答案

我相信最接近您所追求的是 allKeysForObject:。这将返回一个 NSArray,其中包含与字典中给定对象的所有出现对应的键。显然,如果对象只在字典中出现过一次,则 NSArray 将只包含一个对象。

以你的例子为例:

fieldMap = [[NSDictionary alloc] initWithObjectsAndKeys:
@"c0",@"synckey",
@"c1",@"wi_id",
@"c2",@"wi_parent_id",
@"c3",@"wi_type",
@"c4",@"wi_rh_task",
@"c5",@"decision_key",
@"c6",@"wi_stat",
@"c7",@"wi_prio",
@"c8",@"wi_cd",
@"c9",@"wi_ct",
@"cb",@"wi_dh_stat",
@"cc",@"wi_user",
nil];

此附加代码将返回一个包含 1 个字符串对象的数组,该对象的计算结果为 @"c7":

NSArray *keyArray = [fieldMap allKeysForObject:@"wi_prio"];

[旁白:请注意,由于编译器的工作方式,这仅适用于此处;它采用所有出现的@"wi_prio"并使它们成为同一个对象。相反,如果您可能从磁盘等加载字典,则此方法不适用于 NSStrings。相反,您应该使用 allKeys 然后遍历它们,与 [mystring isEqualToString:anotherString] 进行比较。]

关于objective-c - Cocoa 中的双向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416271/

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