2017-01-23 69 views
3

我正在創建自己的框架,我添加了客觀的c文件和它的工作正常之後,我需要添加swift文件後添加一些swift文件xcode不給我選項自動創建橋接然後我跟着Mix and Match approach。我遵循了我所理解的一切。獲取錯誤接收器的類消息是一個前向聲明

我想訪問swift文件到Objective c中,但是我得到了前向聲明的錯誤,所以下面是我附加的示例代碼,請指導我在哪裏做錯了。

TestObjectCFile.h

#import <Foundation/Foundation.h> 
@class TestSwiftFile; 
@interface TestObjCFile : NSObject 


@end 

TestObjectCFile.m

#import "TestObjCFile.h" 
#import <TestFrameworkTry/TestFrameworkTry-Swift.h> 
#import "TestFrameworkTry.h" 


@implementation TestObjCFile 

- (void)TestMethodForImportingSwiftFile 
{ 

    TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init]; 
// TestSwiftFile * testSwiftFile = [self returnSwiftClassInstance]; 
    NSLog(@"%@",testSwiftFile); 
} 
@end 

TestSwiftFile.swift

import Foundation 

其中t他錯誤發生在TestObjectCFile.m以下行。

TestSwiftFile * testSwiftFile = [[TestSwiftFile alloc] init]; 

如顯示附圖所示。 enter image description here

+0

你有導入你的Swift橋接文件並構建你的應用程序嗎? – CodeChanger

+0

我已經提到我正在從事框架工作,而且Xcode在框架中沒有這個功能。 – Aleem

+0

你能展示完整的swift代碼嗎? – yageek

回答

4

最後我得到了解決方案。我做了以下更改。下面是你的框架中的列表。

斯威夫特類使用的目標C類

  • 使用打開關鍵字之前,斯威夫特
  • 公開賽之前
  • 使用@objc關鍵詞關鍵詞斯威夫特類
  • 導入目標C類的所有頭類名在傘文件 YourProject.h那些正在使用Swift類。
  • 使用#import <YourProjectName/YourProjectName-Swift.h>的目的 Ç

我跟着蘋果的混搭手法。

+0

你能否詳細說明「在Umbrella文件YourProject中導入目標c類的所有頭文件。h那些正在使用Swift類「或爲進一步閱讀提供參考? – Ali

+1

實際上,傘頭是一個框架的'主'頭文件,它的用途是可以編寫並且可以使用名稱」YourProject.h「你需要列出所有這些目標c類的頭文件,這些頭文件都是使用swift類的,並且導入所有那些在傘形文件中的文件。有意義嗎? – Aleem

+0

是的,謝謝。這整個事情是一場噩夢,不是基本的,但是當涉及到使用不同的框架以及它們與Apple框架交互的方式。 – Ali

相關問題