Точно, как использовать ненулевое в определенных случаях в Задаче C

Я прочитал много постов об обнуляемости, но я не могу из-за своей жизни убрать мои предупреждения. Вот пара примеров:

playPause = @[[UIImage imageNamed:@"Play"], [UIImage imageNamed: @"Pause"]];
[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];

Каждое из них получает следующее предупреждение: "неявное преобразование из указателя с нулевым значением" NSData * _Nullable "в тип указателя с ненулевым значением" NDSata* _Nonnull "

Окружение кода NS_ASSUME_NONNULL_BEGIN/End также не работает.

Я пробовал большое количество комбинаций (ненулевых) __nonnull и т. Д. И, похоже, не могу найти волшебное расположение ключевых слов, чтобы предупреждение исчезло.

1 ответ

Решение

Проблема в том, что NSString dataUsingEncoding: метод может вернуть nil, Но NSFileHandle writeData: не принимает nil параметр.

Разделить эту строку:

[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]];

В эти:

NSData *data = [header dataUsingEncoding:NSUTF8StringEncoding];
if (data) {
    [imagePropertiesFileHandle writeData:data];
}
Другие вопросы по тегам