Прерывистый сбой: - setObjectForKey: объект не может быть равен нулю (ключ:ref_id)
Объект ref_id - это строка / число в ответе JSON. Один и тот же код работает большую часть времени. Но иногда это дает сбой (~ менее 5%).
NSDictionary *udfDict = nil;
if (data) {
if ([data length] > 0) {
udfDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&serializationError];
}
}
if (udfDict) {
NSString *transactionreason;
NSString *refId;
if (![CustomUtilities isEmptyOrNull:udfDict[@"ref_id"]]) {
refId = udfDict[@"ref_id"];
[dict setObject:refId forKey:@"ref_id"];
}
Обеспокоенность: если не удается уменьшить число от строки к строке, код должен постоянно ломаться. Но это не так. Авария прерывистая, и разрывы кода происходят только в течение ~5% случаев.
1 ответ
Проверка данных!= Nil не нужна. Но сделайте себе и читателям своего кода услугу и напишите if (data!= Nil), а не if (data). Это варварство. То же самое для udfDict. длина является свойством, поэтому data.length не [длина данных]. Почему вы читаете изменчивые контейнеры? Это какой-то код, который вы скопировали и не поняли?
Ваш код потерпит крах, если данные JSON будут массивом.
Мы не знаем, что делает isEmptyOrNull.
Почему setObject, а не dict [@"ref_id"] = ...?
И я не вижу здесь никаких цифр. В чем собственно проблема?