Swift 4.2: [Swift._EmptyArrayStorage _getValue:forType:]: 无法识别的选择器
Swift 4.2: [Swift._EmptyArrayStorage _getValue:forType:]: unrecognized selector
我在将项目升级到 Swift 4.2(从 4.0 转换)后遇到 NSInvalidArgumentException
异常。
2018-09-19 15:37:33.253482+0100 <redacted>-beta[3715:1010421] -[Swift._EmptyArrayStorage _getValue:forType:]: unrecognized selector sent to instance 0x107e6c290
2018-09-19 15:37:33.254312+0100 <redacted>-beta[3715:1010421] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Swift._EmptyArrayStorage _getValue:forType:]: unrecognized selector sent to instance 0x107e6c290'
它与 NSMutableAttributedString
相关,代码添加了一些属性,例如 NSAttributedString.Key.underlineStyle
。
即将分配属性字符串时发生异常:textView.attributedText = mutableAttributedString
.
更新:
所以,它在 Swift 4 中工作:
mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.styleNone.rawValue, range: range)
然后,对于 Swift 4.2,编译器建议将 NSUnderlineStyle.styleNone.rawValue
更改为 NSUnderlineStyle.none.rawValue
之后,编译器开始大喊“'none'不可用:使用[]构造空选项集”:
mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.none.rawValue, range: range)
^~~~~ 'none' is unavailable: use [] to construct an empty option set
我刚刚发现代码有什么问题。
所以,由于编译器错误“'none'不可用:使用[]构造一个空选项集”,我替换了 NSUnderlineStyle.none.rawValue
和 []
♂️ 这不是正确的情况,因为它使用的是 rawValue
,而不是类型 none
.
因此,修复方法是使用 0
。
错误:mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: [], range: range)
右: mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: 0, range: range)
我在将项目升级到 Swift 4.2(从 4.0 转换)后遇到 NSInvalidArgumentException
异常。
2018-09-19 15:37:33.253482+0100 <redacted>-beta[3715:1010421] -[Swift._EmptyArrayStorage _getValue:forType:]: unrecognized selector sent to instance 0x107e6c290
2018-09-19 15:37:33.254312+0100 <redacted>-beta[3715:1010421] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Swift._EmptyArrayStorage _getValue:forType:]: unrecognized selector sent to instance 0x107e6c290'
它与 NSMutableAttributedString
相关,代码添加了一些属性,例如 NSAttributedString.Key.underlineStyle
。
即将分配属性字符串时发生异常:textView.attributedText = mutableAttributedString
.
更新:
所以,它在 Swift 4 中工作:
mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.styleNone.rawValue, range: range)
然后,对于 Swift 4.2,编译器建议将 NSUnderlineStyle.styleNone.rawValue
更改为 NSUnderlineStyle.none.rawValue
之后,编译器开始大喊“'none'不可用:使用[]构造空选项集”:
mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.none.rawValue, range: range)
^~~~~ 'none' is unavailable: use [] to construct an empty option set
我刚刚发现代码有什么问题。
所以,由于编译器错误“'none'不可用:使用[]构造一个空选项集”,我替换了 NSUnderlineStyle.none.rawValue
和 []
♂️ 这不是正确的情况,因为它使用的是 rawValue
,而不是类型 none
.
因此,修复方法是使用 0
。
错误:mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: [], range: range)
右: mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: 0, range: range)