UIImage+ResizeMagick | NSInvalidArgumentException | iOS | Быстрый

Я использую «UIImage + ResizeMagick» (iOS API от какого-то разработчика для изменения размера изображения, написанного в obj-c) в моем быстром проекте, но сталкиваюсь с проблемами и получаю следующую ошибку:

Закрытие приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "-[UIImage resizedImageByMagick:]: нераспознанный селектор отправлен экземпляру 0x7fe74c2065c0"

Я знаю, что эта ошибка возникает, когда эта функция не существует в этом конкретном классе или если мы передаем неправильные параметры при вызове функции, но я не думаю, что это относится к моему коду (если я не ошибаюсь)

Этот класс записывается как: "UIImage(ResizeMagick)" и, насколько мне известно, это категория, поэтому я могу использовать методы с каждым объектом UIImage. Я импортировал его в свой класс как #import "UIImage+ResizeMagick.h" и использую как:

UIImage *image = [UIImage imageNamed:@"validate-icon-tick.png"];
image = [image resizedImageByMagick:@"200x200"];

Я использую в своем проекте несколько библиотек, написанных на obj-c, но для этой цели я использую соединительный заголовок. Может быть, проблема с ResizeMagick связана с разницей расширений и категорий в obj-c и swift. Подскажите, пожалуйста, что я делаю не так, возможно ли это или нет. Спасибо.


person Fayza Nawaz    schedule 14.09.2015    source источник
comment
управления нажмите на resizedImageByMagick и увидите, что он приведет вас к интерфейсу файла категории. проверьте и прокомментируйте плз   -  person Saheb Roy    schedule 14.09.2015
comment
@Sehab Roy, в UIImage (ResizeMagick) деклерация метода выглядит следующим образом: - (UIImage *) resizedImageByMagick: (NSString *) spec;   -  person Fayza Nawaz    schedule 14.09.2015
comment
Таким образом, после щелчка по элементу управления вы переходите туда.   -  person Saheb Roy    schedule 14.09.2015
comment
Есть ли у вас какая-либо другая переменная экземпляра с именем image или проверьте, правильно ли вы скопировали классы категорий, удалите их и скопируйте еще раз   -  person Saheb Roy    schedule 14.09.2015
comment
Да.. Я могу это сделать.   -  person Fayza Nawaz    schedule 14.09.2015
comment
@Sahed Roy, я пробовал с разными именами изображений + также скопировал их. Но ничего хорошего ... К вашему сведению: я скопировал код библиотеки (UIImage (ResizeMagick)), выполнив следующие шаги: BuildPhases -> CopyBundleResources -> нажмите на знак + -> Добавить папку   -  person Fayza Nawaz    schedule 14.09.2015
comment
Просто перетащите классы в свой навигатор и отметьте галочкой Копировать элементы, если необходимо, добавьте их следующим образом.   -  person Saheb Roy    schedule 14.09.2015
comment
Давайте продолжим обсуждение в чате.   -  person Fayza Nawaz    schedule 14.09.2015


Ответы (1)


Исправлена ​​проблема с использованием расширения (cocopods) в Swift.

Я добавил #import <UIImage-ResizeMagick/UIImage+ResizeMagick.h> в свой файл заголовка моста. В контроллере я использовал методы этого расширения как:

let image = oldImage.resizedImageByMagick("200x200")

Расширения и категории (в быстром и объективном-c) хорошо объяснены здесь: ссылка на сообщение о переполнении стека

person Fayza Nawaz    schedule 10.11.2015