因为你宣布requestComment
是一个NSDictionary
哪些键NSNumbers
和值NSString
不会迫使它尊重它。
样品:
_requestComments = [[NSMutableDictionary alloc] init];
[_requestComments setObject:[NSNumber numberWithInt:34] forKey:@"54"]; // => Warning: Incompatible pointer types sending 'NSNumber * _Nonnull' to parameter of type 'NSString * _Nonnull'
id obj = [NSNumber numberWithInt:35];
id key = @"55";
[_requestComments setObject:obj forKey:key];
NSLog(@"[_requestComments objectForKey:@\"55\"]: %@", [_requestComments objectForKey:@"55"]); //Warning: Incompatible pointer types sending 'NSString *' to parameter of type 'NSNumber * _Nonnull'
NSLog(@"[_requestComments objectForKey:@(55)]: %@", [_requestComments objectForKey:@(55)]);
日志:
$>[_requestComments objectForKey:@"55"]: 35
$>[_requestComments objectForKey:@(55)]: (null)
好吧,我用id
引诱编译器,但id
是一种常见的返回 “类”,在objectAtIndex:
,等,这是常见的JSON解析,当你认为一个对象将是NSString
,但实际上是(反)的NSNumber
。
在做requestComments[serviceRequest.RequestId]
之前,枚举所有键值& class和ALL object值& class。你可以这样检查:
for (id aKey in _requestComments)
{
id aValue = _requestComments[aKey];
NSLog(@"aKey %@ of class %@\naValue %@ of class %@", aKey, NSStringFromClass([aKey class]),aValue, NSStringFromClass([aValue class]));
}
然后你可以尝试跟踪你放错钥匙(class)的位置。
你可以显示你的'requestComments'请打印在日志中并加入问题 – Dhiru
它只是打印“2017-07-06 12:45:31.071 WorkForApp [6076:96649](null)” –
什么是输出'[dataManager.requestComments objectForKey:serviceRequest.RequestId]'? – nayem