由于循环条件,无法发出预编译的标头

时间:2018-06-12 07:56:28

标签: ios swift xcode bridging-header objc-bridging-header

我说我有Swift和Objc类,以及MyProject-Bridging.h

BazSwiftClass.swift

df.show()
+-----+-------+--------------------+----------------+--------+
|BG__c|company|           createdAt|           email|      id|
+-----+-------+--------------------+----------------+--------+
|  ABC|    MCS|2016-10-25T14:04:15Z|email@domain.com|       4|
|  CDE|    MSC|2018-03-28T16:41:06Z|email@domain.com|10850879|
+-----+-------+--------------------+----------------+--------+

df.write.format('parquet').save(parquet_path_in_hdfs)

FooClass.h

public class BazSwiftClass: NSObject {
    public let foo: String
    @objc init(foo: String) {
        self.foo = foo
    }
}

我想访问另一个Swift类中的#import "MyProject-Swift.h" @interface FooClass : NSObject { - (BazSwiftClass)bazMethod; } (让我们说BarSwiftClass)

FooClass.h

我的swift文件中需要FooClass.h,所以我在MyProject-Bridging.h中添加了FooClass

public class BarSwiftClass {
     public hello() -> BazSwiftClass {
          return FooClass().bazMethod()
     } 
}

所以Flow就像 BarSwiftClass - > FooClass - > BazSwiftClass

它无法正常工作,因为编译器显示"未能发出预编译的报头"我认为这是因为MyProejct-Bridging.h中的#import "FooClass.h"

请帮忙。

谢谢。

1 个答案:

答案 0 :(得分:4)

替换您的代码

#import "MyProject-Swift.h"
@interface FooClass : NSObject {
     - (BazSwiftClass)bazMethod;
}

使用

@class BazSwiftClass
@interface FooClass : NSObject {
     - (BazSwiftClass)bazMethod;
}

并在 FooClass.m 文件中,您可以导入 #import“MyProject-Swift.h”