gpt4 book ai didi

arrays - Swift 1/2 自动完成字段不区分大小写

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

我有一个代码,它使用 json 检索一个数组,其中包含存储在数据库中的所有名称,当您在文本字段中键入时,您可以看到建议并自动完成。一切都很好,唯一的问题是区分大小写,事实上,如果我写“你好”,它找不到任何东西,相反,如果我输入“你好”,他会建议标签..我该如何解决?非常感谢。我没有找到任何相关教程。

这是我的代码:

class ViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate,UITableViewDataSource, UITableViewDelegate {

let save = NSUserDefaults.standardUserDefaults()

@IBOutlet var amountPoints: UILabel!
@IBOutlet var reasonView: UITextView!
@IBOutlet var toField: UITextField!
@IBOutlet var pointsField: UITextField!

@IBOutlet var autocompleteTableView: UITableView!
var pastUrls: [String] = []
var autocompleteUrls = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
toField.delegate = self
reasonView.layer.cornerRadius = 1
reasonView.layer.borderWidth = 0.7
reasonView.layer.borderColor = UIColor.grayColor().CGColor
autocompleteTableView.delegate = self
autocompleteTableView.dataSource = self
autocompleteTableView.scrollEnabled = true
autocompleteTableView.hidden = true

getallUser()
var Names = save.arrayForKey("give.Name")
pastUrls = Names as! [String]
print(pastUrls)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}




func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
autocompleteTableView.hidden = false
let substring = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

searchAutocompleteEntriesWithSubstring(substring)
return true // not sure about this - could be false
}

func searchAutocompleteEntriesWithSubstring(substring: String)
{
autocompleteUrls.removeAll(keepCapacity: false)

for curString in pastUrls
{
let myString:NSString! = curString as NSString

let substringRange :NSRange! = myString.rangeOfString(substring)

if (substringRange.location == 0)
{
autocompleteUrls.append(curString)
}
}

autocompleteTableView.reloadData()
}


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return autocompleteUrls.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let autoCompleteRowIdentifier = "AutoCompleteRowIdentifier"
let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier(autoCompleteRowIdentifier, forIndexPath: indexPath) as UITableViewCell
let index = indexPath.row as Int

cell.textLabel!.text = autocompleteUrls[index]
return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedCell : UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
toField.text = selectedCell.textLabel!.text
autocompleteTableView.hidden = true
}








func textViewDidBeginEditing(textView: UITextView) {
reasonView.text = ""
}

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if text == "\n"
{
textView.resignFirstResponder()
return false
}
return true
}



@IBAction func giveButton(sender: UIButton) {


}

@IBAction func returnButton(sender: UIBarButtonItem) {
self.dismissViewControllerAnimated(true, completion: nil)

}

最佳答案

首先,如果您只是想进行前缀搜索,您可以使用hasPrefix: 方法。使用此方法而不考虑大小写的一种简单方法是在调用比较方法之前获取每个字符串的小写版本:

if (myString.lowercaseString.hasPrefix(substring.lowercaseString))
{
autocompleteUrls.append(curString)
}

如果你不介意切换回 NSString 类型,你也可以使用 rangeOfString:options: 方法:

let range = (myString as NSString).rangeOfString(substring, options:[.CaseInsensitiveSearch])
if range.location == 0 {
autocompleteUrls.append(curString)
}

关于arrays - Swift 1/2 自动完成字段不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047422/

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