Сбой при назначении значения - PullRequest
0 голосов
/ 06 ноября 2018

Аналитика показывает, что у 5 пользователей было 20 сбоев при запуске следующего метода. Backend внес изменения, которые теперь возвращают массив, содержащий один словарь. Я быстро добавил этот код, чтобы охватить оба случая. Что из этого кода может вызывать сбои очень непоследовательно, так как я или никто из тестировщиков не смог воспроизвести?

+ (instancetype)createOrUpdateObjectWithDictionary:(NSDictionary *)dictionary inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
    NSDictionary *value;
    if ([dictionary isKindOfClass:[NSArray class]]) {
        id array = dictionary;
        value = array[0];
    } else if ([dictionary isKindOfClass:[NSDictionary class]]) {
        value = dictionary;
    }
}

1 Ответ

0 голосов
/ 06 ноября 2018

Одна из возможностей может заключаться в том, что когда вы пытаетесь извлечь 0-й индекс из массива, а он может не существовать, поскольку в массиве не может быть никаких элементов. Перед извлечением вы можете проверить это как

if ([array count] > 0) {
 value = array[0]
}

или вы можете напрямую использовать array.first, который является безопасным методом и не потерпит крах, даже если массив пуст

...