2015-12-08 37 views
0

我想在我現有的目標C項目中使用我的新ViewController.swift文件。在目標C文件中導入ViewController.swift

下面是SWIFT文件代碼

import UIKit 
class TutorialViewController: UIViewController{ 
} 

下面是Objective C的代碼

#import "TutorialViewController-Swift.h" //"TutorialViewController-Swift.h" file not found 

我無法導入SWIFT代碼。我已經按照this的所有步驟操作

請讓我知道,我在哪裏犯錯。它僅適用於NSObject類嗎?

在此先感謝

回答

3

您不能像這樣直接將Swift類直接導入到Objective C類。默認情況下,Xcode爲此目的生成一個快速橋接頭。您需要導入該標題。通常這個頭文件使用以下命名約定:

<#your module name #>-Swift.h 

或者你可以從你的目標的構建設置值:

  • 選擇你目標
  • 轉到生成設置標籤
  • 轉至Swift編譯器 - 代碼生成類別
  • 檢查的Objective-C的值,生成接口頭名稱
  • 導入,在您的Objective-C類標題要使用你的所有SWIFT類
0

按照文件,當你輸入銀行代碼爲目的-C,你依靠一個Xcode生成的頭文件將這些文件公開到Objective-C。這個自動生成的文件是一個Objective-C頭文件,用於在目標中聲明Swift接口。它可以被認爲是你的Swift代碼的傘頭。此標題的名稱是您的產品模塊名稱,然後加上"-Swift.h"

默認情況下,生成的頭文件包含用public修飾符標記的Swift聲明的接口。如果您的應用程序目標具有Objective-C橋接標題,它還包含那些標有內部修飾符的標記。使用私人修飾符標記的聲明不會出現在生成的標題中。除非明確標記爲@IBAction@IBOutlet@objc,否則私有聲明不會暴露給Objective-C。如果您的應用程序目標是在啓用了測試的情況下編譯的,則單元測試目標可以使用內部修飾符訪問任何聲明,就好像它們是使用public修飾符聲明的,方法是將@testable添加到產品模塊導入語句。

您不需要做任何特殊的事情來創建生成的頭文件 - 只需導入它就可以在您的Objective-C代碼中使用它的內容。請注意,生成頭文件中的Swift接口包含對其中使用的所有Objective-C類型的引用。如果您在Swift代碼中使用自己的Objective-C類型,請務必在將Swift生成的頭文件導入要從中訪問Swift代碼的Objective-C .m文件中導入這些類型的Objective-C頭文件。

更多詳細信息關於此Importing Swift into Objective-C