2016-02-28 5 views
0

Я совершенно новичок в объективе C и следил за инструкциями, которые я нашел, но на данный момент я застрял.NSBitmapImageRep load image

я пытаюсь загрузить изображение со следующим кодом:

NSBitmapImageRep *img; 
img = [NSBitmapImageRep imageRepWithContentsOfFile:filename]; 

«имя_файла» является действительным указателем. Но компилятор говорит мне:

Incompatible pointer types assigning to 'NSBitmapImageRep *' from 'NSImageRep * _Nullable' 

Что мне не хватает или что-то не так?

+0

какое это изображение? 'filename' может быть допустимым объектом NSString, но знаете ли вы, что он указывает на правильный файл? –

+0

Борис Веребский решил мою проблему. Я не знал, что делать явное приведение в цель-c :) – Rolf

ответ

0

imageRepWithContentsOfFile: является заводским методом. Согласно документации, он возвращает «Инициализированный экземпляр подкласса NSImageRep или nil, если данные изображения не могут быть прочитаны». От NSImageRep.h: «Если отправлено в подкласс, это делается только для типов, понятных этому подклассу». Итак, вам нужно только бросить результат указанного типа:

NSBitmapImageRep *imgRep = (NSBitmapImageRep *)[NSBitmapImageRep imageRepWithContentsOfFile:filename]; 

Заметьте, что, как правило, вам не нужно создавать NSBitmapImageRep экземпляры самостоятельно, и может использовать NSImage.

+0

Большое спасибо, что решила мою проблему. Как я писал раньше: я очень новичок в объективе c и не знал об этой проблеме кастинга. – Rolf

+0

Добро пожаловать. Пожалуйста, примите мой ответ тогда :) –