【问题标题】:Check for a String in an array [closed]检查数组中的字符串[关闭]
【发布时间】:2016-05-09 16:45:36
【问题描述】:

如何知道数组中是否有特定的字符串?我想做这样的事情:

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是这个:

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)"
}

【问题讨论】:

  • 这个问题非常不清楚。请edit it 并附上清晰的问题陈述。
  • 代码无论如何都不起作用,因为Alamofire.request 异步工作,getUsuarios() 永远不会返回实际接收到的数据。

标签: arrays string swift


【解决方案1】:

Alamofire.request 异步工作。

包含异步调用的函数/方法永远不会有返回值。

例如你需要一个回调

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)
  }
}

并调用它

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 = ""

  }
}

重要提示:代码非常简单。您应该添加适当的错误处理,至少考虑 Alamofire 返回的错误参数。

【讨论】:

  • 当我使用您的代码时收到此错误,我该如何解决? “[String]”类型的值没有成员“containsString”
  • 是的,当然,我编辑了答案
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多