我的代码中有这个实现:
@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;
}
旧应用程序:
新应用:
编辑2:
正如有人在评论中指出的那样,我做了一个变量的NSLog并且信息很丰富,也许我的Xcode有问题。
我要继续,如果我发现了Xcode的问题,我会发一个答案。
感谢所有帮助。
答案 0 :(得分:3)
"问题"仅仅是你试图查看变量的方式的工件。您正在使用"工具提示"特征。这是一个非常棘手的功能,特别是因为它之前变量甚至被赋予了一个值 - 也就是说,显示一个值,即使该变量确实没有价值,它显示的价值是无稽之谈。这确实是你的问题:你在viewDidLoad
中暂停并使用工具提示,但这太快了:变量还没有价值。
查看变量值的可靠方法是老式的穴居人调试,即在确定变量有值后对变量执行NSLog。
答案 1 :(得分:-2)
在使用NSDictionary之前,您需要初始化它。在Objective-C中,它是这样完成的:
NSDictionary *dConfiguration = [NSDictionary alloc] init];