使用NSMutableDictionary在setObject上出错

时间:2010-12-08 16:22:13

标签: objective-c

我是Objective-C的新手,我想写一本字典,但我有一个错误:

[fullCollaboraeur setObject:(id)tmpArray forKey:(id)col.Id];

这是完整的代码:

NSMutableArray *collaborateurs = [[NSMutableArray alloc] init];
...
NSMutableDictionary *fullCollaboraeur = [[NSMutableDictionary alloc] init];
for (Collaborateur *col in  collaborateurs)
 {
  NSMutableArray *tmpArray;
  tmpArray = [fullCollaboraeur objectForKey:(id)col.Id];
  if(tmpArray == nil)
  {
   NSLog(@"Value for %i is null", col.Id);
   tmpArray = [[NSMutableArray alloc] init];
   [tmpArray addObject:col];
   [fullCollaboraeur setObject:(id)tmpArray forKey:(id)col.Id];
  }
  else
  {
   NSLog(@"%i", col.Id);
   [tmpArray addObject:col];
   [fullCollaboraeur setObject:tmpArray forKey:(id)col.Id];
  }
 }

你能帮我吗?

非常感谢

1 个答案:

答案 0 :(得分:5)

NSLog(@“%i的值为空”,col.Id);     .... [fullCollaboraeur setObject:(id)tmpArray forKey:(id)col.Id];

如果Id的类型为(int),则它不能直接作为字典中的键。字典将对象作为键。

注意:

  • 应避免使用类型转换。所有这些(id)都需要消失。如果编译器在这些行上发出警告,则可能表明存在一个不能通过类型转换修复的实际问题。

  • 实例变量以小写字母命名。 id是保留字,因此不应用作实例变量名。使用类似columnIdentifier

  • 的内容