簡體   English   中英

將Swift導入Objective-c后出現錯誤

[英]error after importing Swift into Objective-c

我嘗試在OC中使用swift,所以我在我想使用swift的.m文件中設置了定義模塊YES,設置了帶有產品名稱的 產品模塊 名稱和“ import ProductName-Swift.h”。

但是項目無法運行,在“ ProductName-Swift.h”中引起很多錯誤 在此處輸入圖片說明

AppDelegate.swift似乎有問題,如何解決此問題

這是我將問題解決到ProductName-Swift.h中的方法:在此文件上,我可以看到類似的導入:

#if defined(__has_feature) && __has_feature(modules)
    @import UIKit;
    @import CoreGraphics;
    @import MessageUI;
    @import AddressBookUI;
    @import AddressBook;
    @import Foundation;
    @import ObjectiveC;
    @import MapKit;
    @import CoreLocation;
#endif

因此,關於錯誤,我認為導入效果不佳。 首先,編譯器不包含在if中。 看來

__has_feature(modules)

返回false(而我在構建設置中進行了設置)。

好吧,放手了,沒有...錯誤再次出現。 看來@import只能在激活模塊后使用,而他發現沒有。。。所以我用#import替換了所有@import,它可以工作了! 但是最后一個問題是每次我在一個swift文件中寫入文件時都會生成文件。我必須分別更改每個導入...,所以我創建了以下代碼段:

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
#import <AddressBookUI/AddressBookUI.h>
typedef ABRecordRef ABRecord;

(最后一行是用Objective-C中使用的ABRecordRef替換在swift方法中找到的ABRecord)

注意:@import ObjectiveC沒有任何#import,但似乎不需要。

PS:如果您認為答案是正確的,我將創建一個帖子,詢問有關模塊設置但不針對編譯器的幫助。

我對MapKit框架有同樣的問題,編譯器指向ProductName-Swift.h文件中缺少MKMapViewDelegate的聲明。 為了解決此問題,我在橋頭文件PoductName-Bridging-Header.h中添加了#import <MapKit/MapKit.h>

您可以嘗試將UIApplicationDelegate添加到此標頭。 我希望這能幫到您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM