NSDictionary 总是 [0]

NSDictionary is always [0]

我的代码中有这个实现:

@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 returns 我期望的 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 但在我的新应用程序中为 [0].

我不知道我错过了什么。

感谢您的帮助。

编辑 1:

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

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

旧应用程序:

新应用:

编辑 2:

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

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

感谢大家的帮助。

在使用 NSDictionary 之前,您需要对其进行初始化。在objective-C中是这样的:

NSDictionary *dConfiguration = [NSDictionary alloc] init];

"problem" 只是您尝试查看变量的方式的产物。您正在使用 "tooltips" 功能。这是一个非常棘手的功能,特别是因为它在之前变量甚至被赋予一个值——也就是说,它显示一个值,甚至尽管该变量实际上还没有任何值,并且它显示的值是无稽之谈。这正是您的问题:您在 viewDidLoad 中暂停并使用工具提示,但这太早了:变量还没有值。

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