2017-06-14 76 views
0

我得到這個錯誤:不能轉換類型的值結構]輸入[字符串]在威逼迅速

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! 

} 

}

+0

你想達到什麼目的? – Hamish

+0

嗨! 我想在我的var(ListaDeDestinos)中存儲列表的結果(listado),然後顯示(...) 如果你不明白我可以給你完整的代碼 – xhinoda

+0

我認爲你需要循環listado並只提取desDestino成員變量。現在你要告訴編譯器做一個結構字符串,它不知道怎麼做 –

回答

1

如果你想在每一listados對象的字符串成員變量,這樣做:

for object in DestinoLista.listados { 
    ListaDeDestinos.append(object.desDestino) 
} 
+0

是.. !!這工作!對於DestinoLista.listado中的對象{ ListaDeDestinos.append(object.desDestino!) } – xhinoda

1

你想成爲什麼 「的Destinos字符串版本」 目前尚不清楚。如果你真的不關心,只想「可用的東西進行調試」,那麼其映射到String(describing:)

let listaDeDestinos = listado.map(String.init(describing:)) 
+0

是的..這也是工作! – xhinoda

相關問題