Ios 在Swift 2中使用KSTokenView
我正试图在Swift 2项目中实现KSTokenView。我已经修复了转换过程中的所有小错误,但是我有三个相同错误的实例,我不知道如何修复。问题在于advance方法,我得到了一个编译时错误,上面写着“advance不可用:调用索引上的advancedBy(n)”方法。我试图寻找涉及此方法的另一个答案,但在挣扎了一段时间后,我无法找到它 问题代码是: 第一个实例在下面的方法中,我将用注释标记它Ios 在Swift 2中使用KSTokenView,ios,swift,swift2,kstokenview,Ios,Swift,Swift2,Kstokenview,我正试图在Swift 2项目中实现KSTokenView。我已经修复了转换过程中的所有小错误,但是我有三个相同错误的实例,我不知道如何修复。问题在于advance方法,我得到了一个编译时错误,上面写着“advance不可用:调用索引上的advancedBy(n)”方法。我试图寻找涉及此方法的另一个答案,但在挣扎了一段时间后,我无法找到它 问题代码是: 第一个实例在下面的方法中,我将用注释标记它 private func _updateText() { if (!_setupComplet
private func _updateText() {
if (!_setupCompleted) {return}
_initPlaceholderLabel()
switch(_state) {
case .Opened:
text = KSTextEmpty
break
case .Closed:
if tokens.count == 0 {
text = KSTextEmpty
} else {
var title = KSTextEmpty
for token: KSToken in tokens {
title += "\(token.title)\(_separatorText!)"
}
if (title.characters.count > 0) {
//advance call made in the statement below
title = title.substringWithRange(Range<String.Index>(start: advance(title.startIndex, 0), end: advance(title.endIndex, -_separatorText!.characters.count)))
}
let width = KSUtils.widthOfString(title, font: font!)
if width + _leftViewRect().width > bounds.width {
text = "\(tokens.count) \(_descriptionText)"
} else {
text = title
}
}
break
}
_updatePlaceHolderVisibility()
}
编辑:算出了。获取第一个参数并对其调用advancedBy(n)。然后将第二个参数放入“n”槽中
示例:let second:String=olderText!。substringFromIndex(olderText!.startIndex.advancedBy(range.location+1))作为字符串
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// If backspace is pressed
if (_tokenField.tokens.count > 0 && _tokenField.text == KSTextEmpty && string.isEmpty == true && shouldDeleteTokenOnBackspace) {
if (_lastToken() != nil) {
if (selectedToken() != nil) {
deleteSelectedToken()
} else {
_tokenField.selectToken(_lastToken()!)
}
}
return false
}
// Prevent removing KSEmptyString
if (string.isEmpty == true && _tokenField.text == KSTextEmpty) {
return false
}
var searchString: String
let olderText = _tokenField.text
// Check if character is removed at some index
// Remove character at that index
if (string.isEmpty) { //advance calls are made in this if statement
let first: String = olderText!.substringToIndex(advance(olderText!.startIndex, range.location)) as String // advance called here (1/2)
let second: String = olderText!.substringFromIndex(advance(olderText!.startIndex, range.location+1)) as String // advance called here (2/2)
searchString = first + second
} else { // new character added
if (tokenizingCharacters.contains(string) && olderText != KSTextEmpty && olderText!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) != "") {
addTokenWithTitle(olderText!, tokenObject: nil)
return false
}
searchString = olderText!+string
}
// Allow all other characters
if (searchString.characters.count >= minimumCharactersToSearch && searchString != "\n") {
_lastSearchString = searchString
startSearchWithString(_lastSearchString)
}
_tokenField.scrollViewScrollToEnd()
return true
}