这是我收到错误的代码片段:
//sourceArray is a NSMutablearray
NSMutableDictionary *dayOfWeekDictionary= [sourceArray objectAtIndex:indexpath.row];
[dayOfWeekDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"isSelected"];//line 2
我从谷歌搜索中得知的是,将不可变对象分配到可变对象中有一些东西。
我在第2行收到错误。有任何建议吗?
答案 0 :(得分:3)
如果[sourceArray objectAtIndex:indexpath.row]
返回不可变字典,只需将其分配给类型为NSMutableDictionary *
的变量,就不会自动将其转换为可变字典。你可以这样写:
NSMutableDictionary *dayOfWeekDictionary= [NSMutableDictionary dictionaryWithDictionary:[sourceArray objectAtIndex:indexpath.row]];
通过使用+[NSMutableDictionary dictionaryWithDictionary:]
,您可以获得基于另一个字典(可以是可变的或不可变的)的可变字典。请注意,您不拥有此词典,因此您不必释放它。另请注意,这是不与存储在数组中的字典对象相同的字典对象。如果你需要数组和dayOfWeekDictionary
都是同一个字典,那么你应该在数组中添加一个可变字典。
答案 1 :(得分:0)
您确定NSMutableDictionary
中有[sourceArray objectAtIndex:indexpath.row]
的实例吗?
我建议在第2行放置一个断点并检查dayOfWeekDictionary
的内容。
和
在评论中,您将NSMutableArray
的实例设置为dayOfWeekDictionary
类型的变量NSMutableDictionary
,如果您尝试调用[dayOfWeekDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"isSelected"];
,则应用程序将崩溃{ {1}}。