早上好,
我使用swift 4 for osx并尝试实现“地址自动完成组合框”
这意味着: 用户开始键入地址,组合框应显示可能的地址:
我试过了:
import Cartesian from './cartesian'
//Somewhere inside the App.js component:
<div id="graph">
</div>
ReactDOM.render(<Cartesian/>,document.getElementById("graph"));
我的打印结果:
@IBOutlet weak var cbSourceAddress: NSComboBox!
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
var cbData = [String]()
func numberOfItems(in comboBox: NSComboBox) -> Int {
return cbData.count
}
func comboBox(_ comboBox: NSComboBox, objectValueForItemAt index: Int) -> Any? {
return cbData[index] as AnyObject
}
// 1
func comboBox(_ comboBox: NSComboBox, completedString string: String) -> String? {
searchCompleter.queryFragment = cbSourceAddress.stringValue
for data in cbData {
if string.characters.count < data.characters.count{
let statePartialStr = data.lowercased()[data.lowercased().startIndex..<data.lowercased().index(data.lowercased().startIndex, offsetBy: string.characters.count)]
if statePartialStr.range(of: string.lowercased()) != nil {
print(data)
return data
}
}
}
return ""
}
// 2
func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) {
searchResults = completer.results
for x in 0 ..< completer.results.count {
print(searchResults[x])
cbData.append("\(searchResults[x])")
}
cbSourceAddress.reloadData()
}
如何格式化为“人类优化字符串”? 我的方法是实现自动完成过程的正确方法吗?
答案 0 :(得分:0)
好的,我找到了解决方案:print(searchResults[x].title)