使用NSMutableDictionary在setObject上出错

0 objective-c

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

[fullCollaboraeur setObject:(id)tmpArray forKey:(id)col.Id];
Run Code Online (Sandbox Code Playgroud)

这是完整的代码:

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];
  }
 }
Run Code Online (Sandbox Code Playgroud)

你能帮我吗 ?

非常感谢

bbu*_*bum 5

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

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

注意:

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

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