objectForKey 不返回任何东西
Posted
技术标签:
【中文标题】objectForKey 不返回任何东西【英文标题】:objectForKey not returning anything 【发布时间】:2011-09-13 23:08:10 【问题描述】:-(NSMutableDictionary *)request:(NSString *)requestString
NSString *filepath = [[NSBundle mainBundle] pathForResource:requestString ofType:@"xml"];
NSError *error = nil;
respString = [NSString stringWithContentsOfFile:filepath usedEncoding:nil error:&error];
NSLog(@"Ping xml");
tempDict = [[NSMutableDictionary alloc] initWithDictionary:[parser readXMLString:respString]];
NSLog(@"%@",tempDict);
return tempDict;
直到那里,一切正常,NSLog 显示 tempDict 中有 2 个对象和键。 但后来:
-(int) authenticateUser
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:@"login"]];
if ([[dictionary objectForKey:@"sessionId0"] isEqualToString:@"-1"] )
//Some code
else
cError = 1;
NSLog(@"%@",[dictionary objectForKey:@"sessionId0"]);
appDelegate.sessionId = [dictionary objectForKey:@"sessionId0"];
[dictionary release];
return cError;
在最后一个 else 中,cError 为 1,NSLog 为该对象输出 nil。 (整个字典的 NSLog 也输出 nil)
【问题讨论】:
你确定[self request:@"login"]
不为零吗?试试 NSLog 到authenticateUser
只是把它扔在那里,但你确定要为结果分配一个新字典,而不是只使用 [self request:] 返回的字典吗?这对您的具体问题没有帮助,只是对于您在这里所做的事情,我不明白您为什么要分配一个全新的字典并将 request: 的结果复制到其中...对于您的实际问题,也许你忘了在这个类的接口中添加 request: 方法?
您的 if 语句检查 [dictionary objectForKey:@"sessionID0"],但在 else 部分检查 [dictionary objectForKey:@"sessionID"]。您在实际代码中的内容是这里的输入错误吗?
@Saphrosit 是的,我做到了,它可以正确打印信息。 @wallacer 将检查,感谢您指出。 @sosborn 我纠正了它。在我的代码中,它正确检查了 sessionId0,很抱歉放置了错误的信息。
【参考方案1】:
将此代码放入您的代码中,然后查看 dict 对象的输出...
-(int) authenticateUser
NSDictionary* dict = (NSDictionary *)[self request:@"login"];
NSLog(@"Dictionary %@",dict);
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithDictionary:[self request:@"login"]];
if ([[dictionary objectForKey:@"sessionId0"] isEqualToString:@"-1"] )
//Some code
else
cError = 1;
NSLog(@"%@",[dictionary objectForKey:@"sessionId"]);
appDelegate.sessionId = [dictionary objectForKey:@"sessionId"];
[dictionary release];
return cError;
【讨论】:
以上是关于objectForKey 不返回任何东西的主要内容,如果未能解决你的问题,请参考以下文章
“任何”的值类型没有成员 'objectforKey' Swift 3 转换