Iphone Swift3.0无法转换类型为';ClosedRange<;指数>';输入';范围<;指数>';
我正试图将Swift 2.3迁移到3.0,并在转换后面对这个问题。任何关于我做错了什么的建议 Swift 3.0: 错误: 让selectorString=key.replacingCharacters(in:range,with:uppercasedFirstCharacter) 您可以使用Swift 3+Iphone Swift3.0无法转换类型为';ClosedRange<;指数>';输入';范围<;指数>';,iphone,xcode,swift2,swift3,xcode8,Iphone,Xcode,Swift2,Swift3,Xcode8,我正试图将Swift 2.3迁移到3.0,并在转换后面对这个问题。任何关于我做错了什么的建议 Swift 3.0: 错误: 让selectorString=key.replacingCharacters(in:range,with:uppercasedFirstCharacter) 您可以使用Swift 3+ override func setValue(_ value: Any?, forKey key: String) { let upperCaseFirstCharacte
override func setValue(_ value: Any?, forKey key: String) {
let upperCaseFirstCharacter = String(key.characters.first!).uppercased()
let range = key.startIndex..<key.index(key.startIndex, offsetBy: 1)
let selectorString = key.replacingCharacters(in: range, with: upperCaseFirstCharacter)
let selector = NSSelectorFromString("set\(selectorString):")
let responds = self.responds(to: selector)
if !responds{
return
}
super.setValue(value, forKey: key)
}
init(dictionary: [String: Any]){
super.init()
setValuesForKeys(dictionary)
}
override func setValue(value:Any?,forKey:String){
让upperCaseFirstCharacter=String(key.characters.first!).uppercased()
让range=key.startIndex。。
Cannot convert value of type 'ClosedRange<Index>' (aka 'ClosedRange<String.CharacterView.Index>') to expected argument type 'Range<Index>' (aka 'Range<String.CharacterView.Index>')
override func setValue(value: AnyObject?, forKey key: String) {
let uppercasedFirstCharacter = String(key.characters.first!).uppercaseString
let range = key.startIndex...key.startIndex.advancedBy(0)
let selectorString = key.stringByReplacingCharactersInRange(range, withString: uppercasedFirstCharacter)
let selector = NSSelectorFromString("set\(selectorString):")
let responds = self.respondsToSelector(selector)
if !responds {
return
}
let range = key.startIndex..<key.index(key.startIndex, offsetBy: 1)
// range is now type Range<Index>
extension String {
var firstCharacterUppercased: String {
guard case let c = self.characters,
let c1 = c.first else { return self }
return String(c1).uppercased() + String(c.dropFirst())
}
}
/* example usage */
let key = "fooBar"
let selectorString = key.firstCharacterUppercased
print(selectorString) // FooBar
override func setValue(_ value: Any?, forKey key: String) {
let upperCaseFirstCharacter = String(key.characters.first!).uppercased()
let range = key.startIndex..<key.index(key.startIndex, offsetBy: 1)
let selectorString = key.replacingCharacters(in: range, with: upperCaseFirstCharacter)
let selector = NSSelectorFromString("set\(selectorString):")
let responds = self.responds(to: selector)
if !responds{
return
}
super.setValue(value, forKey: key)
}
init(dictionary: [String: Any]){
super.init()
setValuesForKeys(dictionary)
}