2016-05-09 19 views
-5

Wie kann ich wissen, ob eine bestimmte Zeichenfolge in einem Array ist? Ich möchte so etwas wie dies zu tun:Suchen nach einem String in einem Array

if (getUsuarios().containsString(usuarioView.text!) == false) { 

    print("hola") 

    alerta("Ups, vas a tener que cambiar algo", texto2: "Ese usuario ya existe", alertaNum: "refreshAlert6") 

    usuarioView.text = "" 


} 

getUsuarios dies:

func getUsuarios() -> String { 
    var usuariosDataBase = [String]() 

    Alamofire.request(.GET, url) 
     .responseJSON { response in 
      print(response) 


      do { 
       let json = try NSJSONSerialization.JSONObjectWithData(response.data!, options: .AllowFragments) 

       if let blogs = json as? [[String: AnyObject]] { 
        for blog in blogs { 
         if let usuario = blog["usuario"] as? String { 
          usuariosDataBase.append(usuario) 
         } 
        } 
       } 
      } catch { 
       print("error serializing JSON: \(error)") 
      } 

      print(usuariosDataBase) 


    } 

    return "\(usuariosDataBase)" 
} 
+1

möglich duplizieren http://stackoverflow.com/questions/24028860/how-to-find-index-of-list-item-in-swift – Coyote

+2

Diese Frage ist unglaublich unklar. Bitte [bearbeiten] (http://stackoverflow.com/posts/37121167/edit) und fügen Sie eine klare Problemstellung ein. – Hamish

+2

Der Code funktioniert nicht, da 'Alamofire.request' asynchron arbeitet und' getUsuarios() 'niemals die tatsächlich empfangenen Daten zurückgibt. – vadian

Antwort

0

Alamofire.request arbeitet asynchron.

Eine Funktion/Methode, die einen asynchronen Aufruf enthält, kann nie einen Rückgabewert haben.

Sie benötigen einen Rückruf zum Beispiel

func getUsuarios(completion : ([String]) -> Void) { 
    var usuariosDataBase = [String]() 

    Alamofire.request(.GET, url) 
    .responseJSON { response in 
     print(response) 

     do { 
     let json = try NSJSONSerialization.JSONObjectWithData(response.data!, options: .AllowFragments) 

     if let blogs = json as? [[String: AnyObject]] { 
      for blog in blogs { 
      if let usuario = blog["usuario"] as? String { 
       usuariosDataBase.append(usuario) 
      } 
      } 
     } 
     } catch { 
     print("error serializing JSON: \(error)") 
     } 
    completion(usuariosDataBase) 
    } 
} 

und nennen es mit

getUsuarios() { (usarios) in 
    if usarios.filter({$0.containsString(self.usuarioView.text!)}).isEmpty == false { 

    print("hola") 

    self.alerta("Ups, vas a tener que cambiar algo", texto2: "Ese usuario ya existe", alertaNum: "refreshAlert6") 

    self.usuarioView.text = "" 

    } 
} 

Wichtiger Hinweis: Der Code ist sehr einfach. Sie sollten eine angemessene Fehlerbehandlung hinzufügen, zumindest unter Berücksichtigung des von Alamofire zurückgegebenen Fehlerparameters.

+0

Wenn ich Ihren Code verwende, empfange ich diesen Fehler, wie kann ich es beheben? Wert des Typs '[String]' hat kein Mitglied 'containsString' – Juanma

+0

Ja, natürlich habe ich die Antwort bearbeitet – vadian

Verwandte Themen