[英]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.