试图比较任何?字符串

时间:2017-12-21 03:47:46

标签: json swift

我正在使用Alamofire获取JSON响应来填充TableView。现在我需要过滤接收的数据,将一些字段与TextField文本进行比较,例如" nombre"使用texto_buscado.text

这是加载TableView的函数:

public func cargarDatos_filtrados (){
    //fetching data from web api
    Alamofire.request(URL_GET_DATA).responseJSON { response in
        self.directorios.removeAll()

        //getting json
        if let json = response.result.value {
            print (json)
            //converting json to NSArray
            let directorioArray : NSArray  = json as! NSArray

            //traversing through all elements of the array
            for i in 0..<directorioArray.count{
                let nom = (directorioArray[i] as AnyObject).value(forKey: "nombre")

                if (nom == texto_buscado.text){
                    //DO SOMETHING
                }

                self.directorios.append(DirectorioCompleto(
                    nombre: (directorioArray[i] as AnyObject).value(forKey: "nombre") as? String,
                    apellidos: (directorioArray[i] as AnyObject).value(forKey: "apellidos") as? String,
                    apodo: (directorioArray[i] as AnyObject).value(forKey: "apodo") as? String,
                    cumple: (directorioArray[i] as AnyObject).value(forKey: "cumple") as? String,
                    conyuge: (directorioArray[i] as AnyObject).value(forKey: "conyuge") as? String,
                    cumple_conyuge: (directorioArray[i] as AnyObject).value(forKey: "cumple_conyuge") as? String,
                    aniversario_bodas: (directorioArray[i] as AnyObject).value(forKey: "aniversario_bodas") as? String,
                    empresa: (directorioArray[i] as AnyObject).value(forKey: "empresa") as? String,
                    direccion_empresa: (directorioArray[i] as AnyObject).value(forKey: "direccion_empresa") as? String,
                    tel_negocio: (directorioArray[i] as AnyObject).value(forKey: "tel_negocio") as? String,
                    fecha_ingreso: (directorioArray[i] as AnyObject).value(forKey: "fecha_ingreso") as? String,
                    num_rotario: (directorioArray[i] as AnyObject).value(forKey: "num_rotario") as? String,
                    padrino: (directorioArray[i] as AnyObject).value(forKey: "padrino") as? String,
                    direccion_casa: (directorioArray[i] as AnyObject).value(forKey: "direccion_casa") as? String,
                    tel_casa: (directorioArray[i] as AnyObject).value(forKey: "tel_casa") as? String,
                    celular: (directorioArray[i] as AnyObject).value(forKey: "celular") as? String,
                    email: (directorioArray[i] as AnyObject).value(forKey: "email") as? String,
                    email_privado: (directorioArray[i] as AnyObject).value(forKey: "email_privado") as? String,
                    clasificacion: (directorioArray[i] as AnyObject).value(forKey: "clasificacion") as? String,
                    imagen: (directorioArray[i] as AnyObject).value(forKey: "imagen") as? String
                ))
            }
        }

        //displaying data in tableview
        self.tableView.reloadData()
    }
}

但我收到以下警告信息:

  

二元运算符&#39; ==&#39;不能应用于任何类型的操作数?&#39;和&#39;字符串?&#39;

在第

if (nom == texto_buscado.text){
    //DO SOMETHING
}

1 个答案:

答案 0 :(得分:3)

有很多方法可以改进您的代码。

  • 请勿在Swift中使用NSArray
  • 请勿使用AnyObject
  • 不要多次重复directorioArray[i] as AnyObject
  • 请勿使用value(forKey:)从字典中获取值。

使用正确的Swift类型。使用变量来保存重复的值。

由于您的数据似乎是包含字符串键和字符串值的字典数组,因此您可以按如下方式更新代码:

public func cargarDatos_filtrados (){
    //fetching data from web api
    Alamofire.request(URL_GET_DATA).responseJSON { response in
        self.directorios.removeAll()

        //getting json
        if let json = response.result.value as? [[String:String]] {
            print (json)

            //traversing through all elements of the array
            for dict in json {
                let nom = dict["nombre"]

                if (nom == texto_buscado.text){
                    //DO SOMETHING
                }

                self.directorios.append(DirectorioCompleto(
                    nombre: dict["nombre"],
                    apellidos: dict["apellidos"],
                    apodo: dict["apodo"],
                    cumple: dict["cumple"],
                    conyuge: dict["conyuge"],
                    cumple_conyuge: dict["cumple_conyuge"],
                    aniversario_bodas: dict["aniversario_bodas"],
                    empresa: dict["empresa"],
                    direccion_empresa: dict["direccion_empresa"],
                    tel_negocio: dict["tel_negocio"],
                    fecha_ingreso: dict["fecha_ingreso"],
                    num_rotario: dict["num_rotario"],
                    padrino: dict["padrino"],
                    direccion_casa: dict["direccion_casa"],
                    tel_casa: dict["tel_casa"],
                    celular: dict["celular"],
                    email: dict["email"],
                    email_privado: dict["email_privado"],
                    clasificacion: dict["clasificacion"],
                    imagen: dict["imagen"]
                ))
            }
        }

        //displaying data in tableview
        self.tableView.reloadData()
    }
}