从Swift 3迁移到4/5的Objective-C项目中的Swift CoCoCoaPod库
我在我的Objective-C项目中使用了一个Swift CocoaPod。最初它是一个Swift 3项目,我只需将从Swift 3迁移到4/5的Objective-C项目中的Swift CoCoCoaPod库,objective-c,swift,cocoapods,Objective C,Swift,Cocoapods,我在我的Objective-C项目中使用了一个Swift CocoaPod。最初它是一个Swift 3项目,我只需将#import“-Swift.h”添加到我的.m或.h文件中。我已经更新到最新版本的CocoaPod,我相信现在是Swift 5。因此,这不再有效,因为找不到任何属性 我在网上查阅了许多不同的资源,包括苹果的文档,但程序不清楚该怎么做。似乎我必须进入并编辑.swift文件,并在我希望访问的每个属性或方法前面添加@objc?这似乎违背了CocoaPods的初衷,因为下一次我更新时,所
#import“-Swift.h”
添加到我的.m或.h文件中。我已经更新到最新版本的CocoaPod,我相信现在是Swift 5。因此,这不再有效,因为找不到任何属性
我在网上查阅了许多不同的资源,包括苹果的文档,但程序不清楚该怎么做。似乎我必须进入并编辑.swift
文件,并在我希望访问的每个属性或方法前面添加@objc
?这似乎违背了CocoaPods的初衷,因为下一次我更新时,所有的更改都会被吹走
我试图查看生成的标题,但当我突出显示#import“-Swift.h”
行时,我只看到了NSObject声明。显然,我猜这只是一个构建时项目
根据Apple文档()的规定,Swift声明必须用public或open修饰符标记,当我检查Swift文件时,我发现它们确实是
我用的吊舱是HGCircularSlider。我尝试访问的Range CircularSlider类中的一个示例如下:
open var startPointValue: CGFloat = 0.0 {
didSet {
guard oldValue != startPointValue else { return }
if startPointValue < minimumValue {
startPointValue = minimumValue
}
if distance > 0 {
endPointValue = startPointValue + distance
}
setNeedsDisplay()
}
}
但这些似乎有点像黑客,因为当我想安装这个CocoaPod的更新版本时,我对pod文件所做的更改就会被吹走
有没有建议如何在不必编辑CocoaPod中的swift文件的情况下执行此操作?,供其他人参考。我找到的在线资源很有用,但没有详细说明这个具体案例
import Foundation
import HGCircularSlider
class CircularSliderObjc: RangeCircularSlider {
}
import Foundation
import HGCircularSlider
class CircularSliderObjc: RangeCircularSlider {
}
@objc override open var startPointValue: CGFloat {
get {
return super.startPointValue;
}
set {
super.startPointValue = newValue;
}
}
@property (weak, nonatomic) IBOutlet CircularSliderObjc *rangeSlider;