2016-05-12 2 views
-1

Я вьетнамский, и мой английский умение не очень хорошо. Я знаю, что мой вопрос задавался много раз, но у меня все еще есть вопрос: Во многих учебниках все говорили: «-Swift.h» можно импортировать только в Objective-C * .m-файл, но если я не импортирую «-Swift» .h "в * .h файл, как я могу объявить классы IBOutlet из Swift, которые хранятся в структуре Swift? Всегда есть ошибки, когда я пытался что-то нравится это:Как импортировать среду Swift в Objective-C?

https://ios.james.ooo/using-swift-in-objective-c-projects-f7e7a09f8be#.a5zehn74b
Integrate Swift framework to objective-c application
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
importing swift framework into a objective-c project

Поэтому, пожалуйста, не просил меня искать Google. Я хочу импортировать Swift framework в Objective-C вручную, поэтому, пожалуйста, направляйте меня шаг за шагом, как это сделать. Спасибо заранее!
UPDATE:
Я пробовал: много ссылку в Google, в деталях: 1/Создать Swift файл в моей Objective-C проект так Xcode создал Objective-C автоматически Bridging файл заголовка. 2/Перейдите к настройкам вашей цели, нажмите «+» в разделе «Встроенные двоичные файлы» и выберите мою среду Swift. 3/В разделе «Параметры сборки» отметьте «Встроенный контент содержит быстрый код». 4/Импортировать файл «-Swift.h» в мой объектный файл C .m И ничего не происходит, ошибка все еще существует, как я сказал выше.

+3

Обновите свой вопрос тем, что вы попробовали, и объясните, какие проблемы и ошибки вы испытываете при попытке. – rmaddy

+1

Ответ на ваш вопрос содержится в документации, связанной с яблоком. Посмотрите, что он говорит в заголовке «Ссылка на быстрый класс или протокол в заголовке Objective-C» – dan

+0

@dan Я пробовал и все еще там что-то не видела. –

ответ

0

Я не уверен, в каких проблемах вы столкнулись, но одна сложная ситуация - когда код Swift вызывает функции Objective-C, которые используют классы Swift как, например, параметры. Эти функции Objective-C должны быть объявлены в заголовке моста, поэтому типы Swift, используемые декларациями функций, должны быть доступны в заголовке моста, но заголовок моста не может импортировать *-Swift.h!

Вот простой пример: код Objective-C вызывает функцию funSwift() в MySwiftClass, что в свою очередь вызывает функцию funObjectiveC() Objective-C, который принимает AnotherSwiftClass в качестве параметра.

Swift код:

// Inheritance from NSObject is important here 
class MySwiftClass : NSObject 
{ 
    static func funSwift() -> Void 
    { 
     print("Called funSwift()") 
     let x : AnotherSwiftClass = AnotherSwiftClass() 
     funObjectiveC(x) 
    } 
} 

class AnotherSwiftClass : NSObject 
{ 
    var intMember : Int32 = 123 
} 

Objective-C код (.m файл):

// Make sure the `-Swift.h` file is imported! 

void funObjectiveC(AnotherSwiftClass * swiftClass2) 
{ 
    printf("In funObjectiveC(), intMember = %d\n", swiftClass2.intMember); 
} 

// In some other function: 
... 
    [MySwiftClass funSwift]; 
... 

Чтобы сделать эту работу, включают следующее обводного заголовок:

@class AnotherSwiftClass; 

void funObjectiveC(AnotherSwiftClass *); 
+0

Вот несколько фотографий моих ошибок, которые могут понять, что произошло? http://i.imgur.com/MiUnN6y.png http://i.imgur.com/OAb086q.png http://i.imgur.com/Ir5cdeb.png http: //i.imgur .com/XEHseR7.png http://i.imgur.com/ppcNmTb.png http://i.imgur.com/M8aLsVH.png http://i.imgur.com/7NvC4WM.png –

Смежные вопросы