我今天遇到了一个惊悚错误。我有NSArray
和NSMutableDictionary
。问题是我的NSMutableDictionary
变成了一个数组。这是代码:
头:
NSArray *tableViewCellValues;
NSMutableDictionary *inputValues;
实现:
- (void)viewDidLoad
{
[super viewDidLoad];
tableViewCellValues = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil];
inputValues = [NSMutableDictionary dictionary];
//other code...
}
通常我应该得到一个数组,其中“First”,“Second”和“Third”作为对象,空NSMutableDictionary
。当我在初始化NSMutableDictionary
后立即在日志中打印它时,我得到以下内容:
(lldb) po tableViewCellValues
(NSArray *) $1 = 0x00000000 <nil>
(lldb) po inputValues
(NSMutableDictionary *) $2 = 0x06a80420 <__NSArrayI 0x6a80420>(
First,
Second,
Third
)
(lldb) po [tableViewCellValues class]
error: Couldn't execute function; result was eExecutionDiscarded
(lldb) po [inputValues class]
(id) $4 = 0x01453b64 __NSArrayI
我有点困惑。我试着清理并再次运行它,但没有任何反应。
我正在使用Mac OS X 10.7.3和Xcode 4.3,如果它很重要的话。
任何帮助都将不胜感激。
答案 0 :(得分:2)
你真的想为你的字典分配内存,所以它应该是:
self.inputValues = [[NSMutableDictionary alloc] init];
答案 1 :(得分:1)
新的文字语法更好:
self.myMutDict = [@{} mutableCopy]
或没有属性的较长版本只是为了理解:
NSDictionary *emptyDict = @{};
NSMutableDictionary *myMutDict = [emptyDict mutableCopy];
答案 2 :(得分:-1)
这是因为你没有分配词典
使用此代码
inputValues = [[NSMutableDictionary alloc] init];