2014-10-27 2 views
0

Я пытаюсь написать новые функции моего проекта Objective-C в Swift. У меня есть существующий файл Objective-C называется NSString + Расширение определяется как такИспользование классов расширения Objective-C в Swift

@interface NSString (Extensions) 

Файл назван NSString.Extensions.h. У меня есть некоторые специальные методы экземпляра приложения (например: stringByRemovingSpecialCharacters). Я добавил файл заголовка (заголовок заголовка), определенный в Swift Compiler - Code Generation в моих настройках проекта. Я добавил #import "NSString + Extensions.h" в этом файле заголовка. Но ни один из методов в файле расширения не может быть вызван из файла Swift. Как использовать этот файл расширения в Swift? У меня есть дополнительные файлы расширений - NSData + Encryption.h и т. Д., Которые я тоже хотел бы использовать.

+1

Вы посмотрели: http://stackoverflow.com/questions/24006264/how-to-call-an-objective-c-category-method-in-swift? –

+0

Я использовал файлы расширений, подобные этому из кода Swift. Можете ли вы разместить содержимое своего файла? Одна из проблем, которые были у меня в Xcode 6.0.1, заключалась в том, что если импортированный файл .h содержал дублирующее определение метода, все, что было объявлено после определения метода дублирования, не было видно в Swift. Итак, если ваш .h окажется длинным, проверьте дубликаты определений и удалите их. –

ответ

0

Если вы добавите объектно-C-файл в быстрый проект, xcode спросит, хотите ли вы добавить заголовок -c-мостик цели, на который вы отвечаете да. Затем вы должны импортировать свои файлы в файл моста, и это позволит вам вызывать их из ваших быстрых файлов. PS вы можете удалить файл цели-C, который теперь не используется.

+0

Да, я уже это сделал. Я могу использовать мои обычные классы Obj-C таким образом (я обновил свой вопрос, чтобы сказать, что заголовок заголовка будет понятным), но я не могу использовать файл obj-C, который является расширением основного или родного Obj-C (как вы называете это?) класс ex: NSString. Мой пользовательский класс - NSString (Extensions) или NSString + Extensions.h. Так что, если я импортирую этот заголовок, я могу сделать NSString * str = @ "foo% &$%&"; str = [str stringByRemovingSpecialCharacters]; – Dave

+0

Я не думаю, что вы хотите удалить файл Objective-C. В заголовке моста есть оператор импорта для этого файла, и файл должен существовать. –

+0

Нет только манекена, который вы создаете, чтобы вызвать xcode для сборки заголовка моста. – AMAN77