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。
我的代码中有这个实现:
@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。