gpt4 book ai didi

cocoa - NSMutableDictionnary 的内容不规则地返回

转载 作者:行者123 更新时间:2023-12-03 17:50:09 24 4
gpt4 key购买 nike

我正在尝试在 Objective-C 的字典中添加键。代码如下:

我有一个类 MyClass,其头文件包含:

@property (nonatomic) NSMutableDictionary *dict;

初始化如下:

_dict = [[NSMutableDictionary alloc] init];

然后我尝试向其中添加键:

- (void) addOrModify:(myKey*) key withValue:(myValue *) value {
[self.dict setObject:value forKey:key];
NSLog(@"Adding the key %@ %p with value %@ %p",[key description],key,[value description],value);
NSLog(@"%@",[self.dict description]);
}

这是我添加不同的键/值时得到的结果:

Adding the key (key1) 0x7f9dc3590070 with value (value1) 0x7f9dc358e760
{
"(key1)" = "(value1)";
}

Adding the key (key2) 0x7f9dc357adc0 with value (value2) 0x7f9dc357de20
{
"(key2)" = (null);
"(key1)" = "(value1)";
}

Adding the key (key3) 0x7fa4d2cbdbd0 with value (value3) 0x7fa4d2d53cf0
{
"(key3)" = "(value3)";
"(key2)" = "(value2)";
"(key1)" = "(value1)";
}

现在,如果我使用 XCode 的调试器查看字典的实际内容,我发现所有键/值对都按其应有的方式存在。所以看来dict的描述方法未能正确打印某些键的值。不使用 NSLog 但在 UITable 中显示字典的内容也会发生同样的情况。另请注意,如果我尝试记录这些特定键的值的地址,它也会给我 0x0(因此我的描述函数没有错误)。

请注意,行为相当困惑,有时多个值被设置为 nil,然后在我添加了几对键/值后它们会正确显示。我真的无法解决这个问题,任何帮助将不胜感激。

编辑 1

我的 key 的界面

@interface myKey : NSObject <NSCopying>
@property(nonatomic, copy) NSString *myKeyName;
@property(nonatomic) float myKeyFloat;
@property(nonatomic, readonly, strong) NSDate *dateCreated;

我的值(value)观的界面:

typedef NS_ENUM(NSInteger, Unities) { g, kg, };
@interface myValue : NSObject
@property(nonatomic) float myValueFloat;
@property(nonatomic) Unities myValueUnit;

调用代码

- (IBAction)addKeyValue:(id)sender { 
myValue *value = [myValue randomValue];
myKey *key =[[CatalogKeys sharedCatalogKeys]
getRandomKeyFromStore]; [self.dict addOrModify:key withValue: value];
}

其中 randomValue 只是将 myValueUnit 设置为“g”并将随机浮点放入 myValueFloat

最佳答案

这是一个猜测:

提供的信息并未显示您的类型 myKey 实现了 isEqual:hash。键必须实现这些方法才能在 NSDictionary 中正常工作;如果未实现,则将使用默认的 NSObject 实现,并且它们可能不会为 myKey 实例生成正确的结果。

您还指出使用 myKey 实例的 description 确实有效,这是有道理的,因为 description 返回一个 NSString 并且该类型实现了 isEqual:hash

HTH

关于cocoa - NSMutableDictionnary 的内容不规则地返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021320/

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