Так что я получаю эту ошибку при создании NSDictionary
:NSCFNumber escapedString Ошибка с NSDictionary
DLog(@"hiliteID: %@ | regionID: %@", hiliteID, regionID);
if ([hiliteID isKindOfClass:[NSNumber class]]) {
DLog(@"hititeID is a number");
}
if ([hiliteID isKindOfClass:[NSString class]]) {
DLog(@"hiliteID is a string");
}
if ([regionID isKindOfClass:[NSNumber class]]) {
DLog(@"regionID is a number");
}
if ([regionID isKindOfClass:[NSString class]]) {
DLog(@"regionID is a string");
}
NSDictionary *regionDictionary = [NSDictionary dictionaryWithObject:regionID forKey:hiliteID];
DLog(@"regionDictionary: %@", regionDictionary);
id result = [self.serverCall XMLRPCCall:kSaveHilitedObjects withObjects:@[self.mapContext, regionDictionary]];
Что вошли:
DEBUG | hiliteID: 160399 | regionID: 950
DEBUG | hititeID is a number
DEBUG | regionID is a number
DEBUG | regionDictionary: {
160399 = 950;
}
DEBUG -[__NSCFNumber escapedString]: unrecognized selector sent to instance 0x7947f5d0
DEBUG *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber escapedString]: unrecognized selector sent to instance 0x7947f5d0'
0x7947f5d0
имеет значение 160399, так что hiliteID
.
hiliteID
- это возвращаемое значение с нашего сервера и установлено как NSString
. Я бросил его в NSNumber
:
NSArray *hiliteIDs = [result allKeys];
if ([[hiliteIDs firstObject] isKindOfClass:[NSString class]]) {
return [NSNumber numberWithInteger:[[hiliteIDs firstObject] integerValue]];
}
else if ([[hiliteIDs firstObject] isKindOfClass:[NSNumber class]]) {
return [hiliteIDs firstObject];
}
Насколько я знаю, нет никакой проблемы с тем, что я делаю здесь.
линия:
id result = [self.serverCall XMLRPCCall:kSaveHilitedObjects withObjects:@[self.mapContext, regionDictionary]];
Я использовал этот класс десятки раз в коде и никогда не было проблемы.
Что может быть причиной ошибки?
Если вы перезаписываете значения 'regionDictionary' с жестко закодированным ключом/значениями NSString или NSNumber', он все равно падает? – Larme
@ Larme Да, я все равно получаю ту же ошибку. – Padin215
Если вы получаете ошибку с помощью 'NSString', а также с NSNumber, может быть другим параметром, вызывающим проблему. Проверьте значение каждого var. – Larme