我得到這個錯誤:不能轉換類型的值結構]輸入[字符串]在威逼迅速
cannot convert value of type [Destinos] to type [String] in coercion swift
我有這樣的結構:
public struct Destinos: Data { public var idDestino : Int? public var desDestino : String? }
這:
var listado = [Destinos]() listado.append(Destinos(idDestino: 1, desDestino: "Asunción")) listado.append(Destinos(idDestino: 2, desDestino: "Miami"))
then:
var ListaDeDestinos = [String]()
所以我的錯誤出現在該行:
ListaDeDestinos = DestinoLista.listado as [String]
這裏有什麼問題?可以幫助我嗎? i'm鴕鳥政策發現這樣的事情在論壇
編輯 我的所有代碼:
import UIKit
類API {
let Presentador: DestinoPresenter! // referenciamos la clase DestinoPresenter en una variable local
init(Present: DestinoPresenter){ // constuctor: inicializamos la variable Presentador y creamos una copia de la clase DestinoPresenter
Presentador = Present
}
var listado = [Destinos]()
func GetDestinos(){
listado.append(Destinos(idDestino: 1, desDestino: "Asunción"))
listado.append(Destinos(idDestino: 2, desDestino: "Miami"))
print(listado)
}
}
類DestinoPresenter {
let mview: ViewController // referenciamos la clase DestinoPresenter en una variable local
init(view: ViewController) { //construnctor
mview = view
}
var ArrayAutoComplete = [String]()
var ListaDeDestinos = [String]()
fileprivate var DestinoLista: Api!
func searchDestinos(_ substring: String) {
ArrayAutoComplete.removeAll() //cada vez que llamemos a esta funcion, limpiamos la variable ArrayAutoComplete del TableView
DestinoLista = Api(Present: self)
DestinoLista.GetDestinos()
// ListaDeDestinos = [(DestinoLista.listado as AnyObject)as!字符串] ListaDeDestinos = DestinoLista.listado如[字符串]
for key in ListaDeDestinos {
let myString:NSString! = key as NSString
if (myString.lowercased.contains(substring.lowercased())) {
print(myString.contains(myString as String) ? "yep" : "nope")
ArrayAutoComplete.append(key)
}
}
mview.mostarResultados(ArrayResultados: ArrayAutoComplete) //llamamos a la función y le pasamos como parametro ArrayAutoComplete
}
}
類的ViewController:UIViewController的{
@IBOutlet weak var textField: UITextField! = nil
@IBOutlet weak var tableView: UITableView! = nil
var autoCompleteDestino: [String] = []
fileprivate var DestinoP: DestinoPresenter!
override func viewDidLoad() {
super.viewDidLoad()
//LEER: pasando como referencia tu vista
DestinoP = DestinoPresenter(view: self)
title = "Texto predecible"
// DestinoP.getDestinos() // DestinoP.ListarDestinos( )
}
func mostarResultados(ArrayResultados: [String]) {
autoCompleteDestino = ArrayResultados
tableView.reloadData()
}
}
擴展視圖控制器:UITextFieldDelegate {
public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let substring = (textField.text! as NSString).replacingCharacters(in: range, with: string)
DestinoP.searchDestinos(substring)
return true
}
}
擴展視圖控制器:UITableViewDataSource {// EL Completa串encontrado EN EL的tableView托裏奧拉卡拉科特ingresado EN EL文本框 公共FUNC的tableView(_的tableView: UITableView,cellForRowAt indexPath:IndexPath) - > UITableViewCell {let} cell = tableView.dequeueReusableCell(withIdentifier:「cell」,for:indexPath)as UITableViewCell let index = indexPath。行作爲詮釋
cell.textLabel!.text = autoCompleteDestino[index]
return cell
}
}
擴展視圖控制器:{的UITableViewDelegate
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return autoCompleteDestino.count
}
// selecciona el resultado desde el tableView para completar en el textField.
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell: UITableViewCell = tableView.cellForRow(at: indexPath)!
textField.text = selectedCell.textLabel!.text!
}
}
你想達到什麼目的? – Hamish
嗨! 我想在我的var(ListaDeDestinos)中存儲列表的結果(listado),然後顯示(...) 如果你不明白我可以給你完整的代碼 – xhinoda
我認爲你需要循環listado並只提取desDestino成員變量。現在你要告訴編譯器做一個結構字符串,它不知道怎麼做 –