1

我今天遇到了一个意外错误。我有一个NSArray和一个NSMutableDictionary。问题是 myNSMutableDictionary变成了一个数组。这是代码:

标题:

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。

任何帮助,将不胜感激。

4

3 回答 3

2

你真的想为你的字典分配内存,所以它应该是:

self.inputValues = [[NSMutableDictionary alloc] init];

于 2012-06-14T13:14:41.990 回答
1

新的文字语法更好:

self.myMutDict = [@{} mutableCopy]

或没有属性的更长版本只是为了理解:

NSDictionary *emptyDict = @{};
NSMutableDictionary *myMutDict = [emptyDict mutableCopy];
于 2014-05-04T10:48:13.300 回答
-1

这是因为你没有分配你的字典

使用此代码

inputValues = [[NSMutableDictionary alloc] init];
于 2012-06-14T13:27:44.807 回答