我试图在一个客观的C项目中使用以下pods文件。
https:/cocoapods.orgpodsiOSDropDown。
我修改了coco文件,确保所有的属性都是公开的,并且有@objc标签。
然而,我试图在Objective c中执行以下Swift函数,但我继续收到以下错误信息。
我在Objective c中试图执行的Swift代码:
dropDown.optionArray = ["Option 1", "Option 2", "Option 3"]
objc代码
NSArray * stringArray = @[@"Option 1", @"Option 2", @"Option 3"];
[_dropDown setOptionArray: stringArray];
而我继续得到以下错误。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[iOSDropDown.DropDown setOptionArray:]: unrecognized selector sent to instance 0x7f8a90048800'
我知道NSArray是一个coco特定的对象,应该在swift和objc之间传输,但我不知道为什么我无法设置optionArray属性而不崩溃。任何帮助将是感激的。
结果发现swift对象是一个数组而不是NSArray。我的解决方案是在 swift 中创建一个辅助变量,接收一个 NSArray,并在 swift 中设置 optionArray var。
@IBInspectable public var arraySetter = NSArray() {
didSet{
let objCArray = NSMutableArray(array: self.arraySetter)
if let swiftArray = objCArray as NSArray as? [String] {
// Use swiftArray here
self.optionArray = swiftArray
}
}
}