NSDictionary总是[0]

时间:2016-01-20 15:00:36

标签: ios objective-c nsdictionary

我的代码中有这个实现:

@implementation vcLogin {
    Util *_Util;
    NSInteger _RowCount;
    NSDictionary *_Payload;
}

在另一个函数中,我试图填写NSDictionary:

_Payload = [NSJSONSerialization JSONObjectWithData:tPayloadData options:kNilOptions error:nil];

但是字典的值总是[0]。

我已经测试了这段代码,看看它是否正常工作:

NSDictionary *tPayload = [NSJSONSerialization JSONObjectWithData:tPayloadData options:kNilOptions error:nil];

tPayload返回我期待的2个值。

我试过这个:

NSDictionary *tPayload = [NSJSONSerialization JSONObjectWithData:tPayloadData options:kNilOptions error:nil];
_Payload = [tPayload mutableCopy];

或者

NSDictionary *tPayload = [NSJSONSerialization JSONObjectWithData:tPayloadData options:kNilOptions error:nil];
_Payload = tPayload;

或者

NSDictionary *tPayload = [NSJSONSerialization JSONObjectWithData:tPayloadData options:kNilOptions error:nil];
[_Payload setValuesForKeysWithDictionary:tPayload];

我之前在一个旧的应用程序中完成了这个,我几乎可以确定我刚刚在实现中声明了,并且如果我检查viewDidLoad中的值,那么字典一直是null,直到我填充它为止在我的旧应用程序中,值为null但在我的新应用程序中为[0]。

我不知道自己错过了什么。

感谢您的帮助。

编辑1:

我刚刚意识到当我在viewDidLoad中停止调试器时,实现中的所有变量都是[0]。

@implementation vcLogin {
    Util *_Util;
    NSInteger _RowCount;
    NSDictionary *_Payload;
}

旧应用程序:

enter image description here

新应用:

enter image description here

编辑2:

正如有人在评论中指出的那样,我做了一个变量的NSLog并且信息很丰富,也许我的Xcode有问题。

我要继续,如果我发现了Xcode的问题,我会发一个答案。

感谢所有帮助。

2 个答案:

答案 0 :(得分:3)

"问题"仅仅是你试图查看变量的方式的工件。您正在使用"工具提示"特征。这是一个非常棘手的功能,特别是因为它之前变量甚至被赋予了一个值 - 也就是说,显示一个值,即使该变量确实没有价值,它显示的价值是无稽之谈。这确实是你的问题:你在viewDidLoad中暂停并使用工具提示,但这太快了:变量还没有价值。

查看变量值的可靠方法是老式的穴居人调试,即在确定变量有值后对变量执行NSLog。

答案 1 :(得分:-2)

在使用NSDictionary之前,您需要初始化它。在Objective-C中,它是这样完成的:

NSDictionary *dConfiguration = [NSDictionary alloc] init];