gpt4 book ai didi

ios - 删除 bridgeToObjective-C 意味着我不能使用 NSRange

转载 作者:行者123 更新时间:2023-11-28 05:34:28 25 4
gpt4 key购买 nike

我有一个 viewController,我可以在其中将一些文本输入到 textField 中,然后点击一个完成的 button 来保存它。如果文本字段中有文本,我只希望完成按钮可见。为了做到这一点,我使用了 UITexfield 的委托(delegate)方法,它在即将被编辑时触发,如下所示。当它传入一个 NSRange 时,我无法将它放入 stringByReplacingCharactersInRange 中,因为 swift 只允许一个范围。因此,我桥接了它,这让我可以使用给定的 NSRange。如果您知道将 NSRange 转换为范围的方法,或者更好,如果您知道检查文本字段是否为空的更简洁、更简洁的方法,请告诉我。非常感谢。

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let newString = textField.text.bridgeToObjectiveC().stringByReplacingCharactersInRange(range, withString: string)

if (newString == "" ) {
self.doneButton.enabled = false
} else {
self.doneButton.enabled = true
}
return true
}

最佳答案

这里是一个函数,它将采用 NSRange 并替换 String 的一部分:

func replaceRange(nsRange:NSRange, #ofString:String, #withString:String) ->String {
let start = nsRange.location
let length = nsRange.length
let endLocation = start + length
let ofStringLength = countElements(ofString)
if start < 0 || endLocation < start || endLocation > ofStringLength {
return ofString
}
var startIndex = advance(ofString.startIndex, start)
var endIndex = advance(startIndex, length)
var range = Range(start:startIndex, end:endIndex)
var final = ofString.stringByReplacingCharactersInRange(range, withString:withString)
return final
}
var original = "🇪🇸😂This is a test"
var replacement = "!"
var nsRange:NSRange = NSMakeRange(1, 2)
var newString = replaceRange(nsRange, ofString:original, withString:replacement)
println("newString:\(newString)")

输出:

newString:🇪🇸!his is a test

关于ios - 删除 bridgeToObjective-C 意味着我不能使用 NSRange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25139240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com