iOS 图表子类 Markerview 使用 Swift 总是在“xxx-Swift.h”中构建错误

Posted

技术标签:

【中文标题】iOS 图表子类 Markerview 使用 Swift 总是在“xxx-Swift.h”中构建错误【英文标题】:iOS Charts subclass Markerview use Swift always Build Error in "xxx-Swift.h" 【发布时间】:2020-04-29 10:24:21 【问题描述】:

MarkerView在“Charts”框架中,当我用swift子类化MarkerView时,会在“Project-Swift.h”中出现Build Error strong> 文件,“Project-Swift.h”Xcode 自动生成。

“TestMV.swift”文件中:

import UIKit

import Charts

class TestMV: MarkerView 


“ProjectName-Swift.h” 文件中:

SWIFT_CLASS("_TtC9KCTFunFit6TestMV")

@interface TestMV : ChartMarkerView

- (nonnull instancetype)initWithFrame:(CGRect)frame 

OBJC_DESIGNATED_INITIALIZER;

- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder 

OBJC_DESIGNATED_INITIALIZER;

@end

“图表”框架中

import Foundation
import CoreGraphics
import AppKit

@objc(ChartMarkerView)
open class MarkerView: NSUIView, IMarker 
     open var offset: CGPoint = CGPoint()

     @objc open weak var chartView: ChartViewBase?

     open func offsetForDrawing(atPoint point: CGPoint) -> CGPoint
     
        .......
     
 

TestMV 子类 Markerview"TestMV.swift"

“ProjectName-Swift.h”中的构建总是出错

“图表”框架中的Markerview

【问题讨论】:

你导入ChartMakerView依赖了吗?或者您可能需要先创建ChartMakerView 请将代码包含为文本而不是图像。这样搜索引擎就可以对其进行索引,并且屏幕阅读器也可以工作。 @BDL 感谢您的建议 @Siarhei 已经重新添加了相关信息,不知道是否清楚 【参考方案1】:

尝试将 @interface TestMV : ChartMarkerView 重命名为 @interface TestMV : MarkerView,因为它是在 TestMV 类中定义的。

供将来参考,a similar question can be found here。

【讨论】:

@interface TestMV : ChartMarkerView,这是 Xcode 在“ProjectName-Swift.h”中自动生成的,我无法修改【参考方案2】:
#import <Charts/Charts-Swift.h>

【讨论】:

以上是关于iOS 图表子类 Markerview 使用 Swift 总是在“xxx-Swift.h”中构建错误的主要内容,如果未能解决你的问题,请参考以下文章

MarkerView 在图表上的最后一个点走出图表

MPAndroidChart MarkerView 在固定位置

这款 iOS 开源库收藏起来,肯定用得上

Idea查看继承关系或其图表的两种方法

Charts:一个强大的iOS图表框架

如何使用iOS图表库创建一个底部轴上有日期时间的图表?