ios - Objective C 项目中 ScrollableGraphicView Swift 库的问题

标签 ios swift datasource

大家好,我的应用程序中的图表我正在使用完全用 Swift 语言编写的 MIT ScrollableGraphView 库。

这是Ghitub的链接https://github.com/philackm/ScrollableGraphView

为了在我的 ObjectiveC 项目中使用这个库,我将其导入到我的 View Controller 文件中:

#import "TargetName-Swift.h"

然后,要使用该库,我们需要包含 <ScrollableGraphViewDataSource>

此时文档说以这种方式分配类

ScrollableGraphView * graphView = [[ScrollableGraphView alloc] initWithFrame: self.view.frame dataSource: self];

这是我完整的ViewController.m

#import "TargetName-Swift.h"

@interface Dashboard () <ScrollableGraphViewDataSource>
@end

@implementation Dashboard

- (void)viewDidLoad {
    [super viewDidLoad];

    ScrollableGraphView *graphView = [[ScrollableGraphView alloc] initWithFrame: self.view.frame dataSource: self];
    [self.view addSubview: graphView];
}

我的问题是 xCode 返回此错误给我

“ScrollableGraphView”没有可见的 @interface 声明选择器“initWithFrame: dataSource:”

我想我已经遵循了使用这个库的所有必要说明,但我不明白为什么我找不到数据源的类分配

在ScrollableGraphView.swift文件中,类分配还包括数据源

public init (frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init (frame: frame)
    }

所以我不明白为什么我不能在 Objective C 中分配类..

我哪里做错了?有人用过这个库吗?你知道如何解决这个问题吗?

最佳答案

在我的例子中,swift源文件中的类分配似乎没有扩展名@objc

一旦我在初始化之前添加了这个,一切对我来说都很完美......

这是变化:

旧来源

public init(frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init(frame: frame)
    }

添加@objc的源

@objc public init(frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init(frame: frame)
    }

现在一切正常......我也感谢 OOPer 他的建议,在这种情况下它是正确的!

关于ios - Objective C 项目中 ScrollableGraphicView Swift 库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258942/

相关文章:

ios - iPhone SDK处理调用

ios - 在 MFMailComposeViewController 中预览多页 PDF

ios - 如何返回此函数的结果?

ios - 类型 '[String]' 的值没有成员 'lastObject'

java - 如何解决 "WebSphere API classes are not available"?

java - HikariCP - 在连接 checkin 和从连接池 checkout 时动态设置连接的数据库

ios - 项目列表与数据源

objective-c - 更改视频 iPad/iPhone 的背景颜色

arrays - 无法使用类型为 '[ClassName.StructName]' 的索引下标类型为 'ClassName.StructName' 的值

ios - 即使使用 set delegate,MKMapview delegate 也从未被调用