2015-06-28 15 views
10

böyle nesnel-c projeye hızlı çerçeve ithal am içine hızlı bir çerçeve ithal çerçeve. tanınanbir amaç-c projesi

sınıfı:

public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle 
{ ... } 

sınıf değil:

public class VeediUtils 
{ ... } 
ilk çalışma alanında tanınan yani neden

Gerek kamunun ve diğer olmasın?

Ayrıca ben

@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler> 

diğer do not

Neden iken görünür bir sınıf olduğunu başlık dosyası MyFramework-Swift.h gördüğünüz?

@objc kamu: Ayrıca

i hızlı projeye hızlı bir çerçeve ithal ediyorum, bu aynı prosedür işler

cevap

15

sen gerektiğini NSObject miras değil, objc içinde hızlı bir sınıf erişmek için bu işaret etmek class VeediUtils

A Swift sınıfı veya protokolü, Objective-C'de erişilebilir ve kullanılabilir olması için @objc özniteliği ile işaretlenmelidir. Bu özellik derleyiciye, bu Swift kodu parçasının Objective-C'den erişilebileceğini anlatır. Swift sınıfınız bir Objective-C sınıfının bir alt öğesi ise, derleyici otomatik olarak sizin için @objc özniteliğini ekler.

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

4

Sen VeediUtils sınıfının bildirim için @objc ekleyebilir veya bu NSObject devralan yapmak zorunda. Aksi takdirde Objective-C'ye görünmez. o NSObject bir alt sınıfıdır UIViewController bir alt sınıf, çünkü sizin durumda

, RecognizedClass tanınır.

önce Swift ile entegre ve Swift Dinamik Framework kullanmak istediğiniz için Project Yapılandırılmışsa
19

, bu şekilde gibi ithal etmek zorunda (eğer uygun isimler koymak zorunda} {daki Projesi bağlıdır):

#import <{MyFramework}/{MyFrameworkMainClass}-Swift.h> 
#import "{YourProjectTargetName}-Swift.h" 
+0

tihs için çok teşekkürler –