如何通过迦太基在Obj-C项目中使用Swift库

不是梅本

我一直在开发具有Xcode 8.2和iOS8〜支持的objc项目。

通过迦太基安装了一个快速库(https://github.com/danielgindi/Charts),但是如果我调用该库的任何方法,则应用程序会崩溃,并显示“无法识别的选择器已发送至实例”错误。

我可以通过Cocoapods使其工作,但是当我将Swift库与Cocoapods一起使用时,构建时间将非常缓慢,因此,如果可能的话,我想使用Carthage。

有什么方法可以通过Carthage在objc项目中使用swift库吗?

基本上,我是根据页面通过迦太基安装了Charts库的。https://github.com/Carthage/Carthage/blob/master/README.md

我只使用嵌入式二进制文件来添加Charts.framework而不是链接框架,因为它解决了启动时的崩溃问题。

3d印第安纳·琼斯

有什么方法可以通过Carthage在objc项目中使用swift库吗?

将Charts.framework添加到项目设置中的“嵌入式二进制文件”后,可以按以下方式将Swift代码导入到ObjC中。例如,对于一个名为的示例项目ChartsObjCSample,您需要:

import "ChartsObjCSample-Swift.h"

现在,您应该可以在ObjC代码中使用Charts API。

但是,有时-Swift.h没有创建上述文件,在这种情况下,您可以创建一个虚拟Swift文件,按照Xcode指令添加brining标头,然后再次清理,构建,这将创建该-Swift.h文件。

最后,要使用Charts API例如创建BarChart,您可以具有一个ViewController,并BarChartView为其分配了故事板视图类,如下所示。

在此处输入图片说明

然后,视图控制器可以使用以下代码呈现BarChart:

#import "ViewController.h"
#import "ChartsObjCSample-Swift.h"
@import Charts;

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    BarChartView* barChartView = (BarChartView*)self.view;

    NSMutableArray* dataEntries = [[NSMutableArray alloc] init];
    for(int i = 0; i < 100; i++) {
        BarChartDataEntry* dataEntry = [[BarChartDataEntry alloc] initWithX:5.0 * arc4random_uniform(12) y:100.0];
        [dataEntries addObject:dataEntry];
    }

    BarChartDataSet* dataSet = [[BarChartDataSet alloc] initWithValues:dataEntries label:@"Visitor Count"];

    BarChartData* barChartData = [[BarChartData alloc] initWithDataSet:dataSet];
    barChartView.data = barChartData;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

呈现的条形图的屏幕截图:

在此处输入图片说明


上面的示例代码可在GitHub上获得


Apple Docs:要将Swift代码从同一目标导入到Objective-C中

使用以下语法并替换适当的名称,将Swift代码从该目标导入到该目标内的任何Objective-C .m文件中:

#import "ProductModuleName-Swift.h"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C ++项目中使用Swift静态库(.a)?

来自分类Dev

如何在Swift项目中使用Obj-c库/自定义界面

来自分类Dev

在Swift项目中正确使用Obj-C库

来自分类Dev

如何在C ++项目中使用共享动态库?

来自分类Dev

如何使用Gradle在我的Android项目中使用库?

来自分类Dev

如何在AOSP项目中使用预建的c ++静态/共享库

来自分类Dev

我如何在C#项目中使用LightStreamer DotNetStandard库

来自分类Dev

如何在Android库项目中使用匕首

来自分类Dev

如何在Elixir项目中使用开源Erlang库?

来自分类Dev

如何在Android中使用库项目中的布局文件

来自分类Dev

如何在Scalajs项目中使用Javascript库

来自分类Dev

如何在Maven项目中使用ASM库

来自分类Dev

如何确保我在项目中使用最新的Java库?

来自分类Dev

如何在swift3项目中使用目标c视图控制器

来自分类Dev

如何在Android主项目中包含库项目中使用的AAR文件

来自分类Dev

如何在Android主项目中包含库项目中使用的AAR文件

来自分类Dev

如何在Swift项目中使用TPKeyboardAvoiding?

来自分类Dev

如何在Swift项目中使用Superpowered lib

来自分类Dev

如何在Swift项目中使用ECSlidingViewController

来自分类Dev

如何在Swift tvOS项目中使用TVML文档?

来自分类Dev

如何在 iOS 项目中构建和使用 C 库?

来自分类Dev

如何在C#项目中使用LIB文件?

来自分类Dev

如何从Visual Studio C ++项目中使用RTMPDump?

来自分类Dev

如何在cmake项目中使用c ++ 20

来自分类Dev

如何在C#项目中使用LIB文件?

来自分类Dev

如何从Visual Studio C ++项目中使用RTMPDump?

来自分类Dev

如何在Swift项目中使用(安装)Swift CSV解析器

来自分类Dev

如何避免通过_old style_库在ZF1项目中使用“ require_once”?

来自分类Dev

库需要QApplication。如何在Qt Quick项目中使用QApplication?

Related 相关文章

  1. 1

    如何在C ++项目中使用Swift静态库(.a)?

  2. 2

    如何在Swift项目中使用Obj-c库/自定义界面

  3. 3

    在Swift项目中正确使用Obj-C库

  4. 4

    如何在C ++项目中使用共享动态库?

  5. 5

    如何使用Gradle在我的Android项目中使用库?

  6. 6

    如何在AOSP项目中使用预建的c ++静态/共享库

  7. 7

    我如何在C#项目中使用LightStreamer DotNetStandard库

  8. 8

    如何在Android库项目中使用匕首

  9. 9

    如何在Elixir项目中使用开源Erlang库?

  10. 10

    如何在Android中使用库项目中的布局文件

  11. 11

    如何在Scalajs项目中使用Javascript库

  12. 12

    如何在Maven项目中使用ASM库

  13. 13

    如何确保我在项目中使用最新的Java库?

  14. 14

    如何在swift3项目中使用目标c视图控制器

  15. 15

    如何在Android主项目中包含库项目中使用的AAR文件

  16. 16

    如何在Android主项目中包含库项目中使用的AAR文件

  17. 17

    如何在Swift项目中使用TPKeyboardAvoiding?

  18. 18

    如何在Swift项目中使用Superpowered lib

  19. 19

    如何在Swift项目中使用ECSlidingViewController

  20. 20

    如何在Swift tvOS项目中使用TVML文档?

  21. 21

    如何在 iOS 项目中构建和使用 C 库?

  22. 22

    如何在C#项目中使用LIB文件?

  23. 23

    如何从Visual Studio C ++项目中使用RTMPDump?

  24. 24

    如何在cmake项目中使用c ++ 20

  25. 25

    如何在C#项目中使用LIB文件?

  26. 26

    如何从Visual Studio C ++项目中使用RTMPDump?

  27. 27

    如何在Swift项目中使用(安装)Swift CSV解析器

  28. 28

    如何避免通过_old style_库在ZF1项目中使用“ require_once”?

  29. 29

    库需要QApplication。如何在Qt Quick项目中使用QApplication?

热门标签

归档