var globalCountArray = [AnyObject]()
var assetDictionary = [String:AnyObject]()
globalCountArray.append(assetDictionary as AnyObject)

¿Cómo filtrar el diccionario usando la matriz Anyobject? He probado esto.

  globalCountArray = globalCountArray.filter {$0     as AnyObject != dict }

Pero tengo error

El operador binario '! =' No se puede aplicar a operandos de tipo 'AnyObject' y '[String: AnyObject]' "

0
akshay 15 nov. 2017 a las 13:47

2 respuestas

La mejor respuesta

Intenta usar esto

    var globalCountArray = [AnyObject]()
    var assetDictionary = [String:AnyObject]()
    globalCountArray.append(assetDictionary as AnyObject)
    let dict = [String:AnyObject]()




    globalCountArray = globalCountArray.filter({ (obj) -> Bool in

        if obj is[String:AnyObject] {

            return (obj as! [String:AnyObject]) != dict 


        }
        return false
    })

--------- O Puede lograr lo mismo a través de ----------

globalCountArray = globalCountArray.filter({ (obj) -> Bool in

            if obj is[String:AnyObject] {

                return (obj as! [String:AnyObject]) == dict 


            }
            return true
        })

Necesita agregar este método fuera de la definición de su clase.

public func !=(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool {
    return !NSDictionary(dictionary: lhs).isEqual(to: rhs)
}

 public func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool {
    return NSDictionary(dictionary: lhs).isEqual(to: rhs)
}
1
Sucharu Hasija 15 nov. 2017 a las 11:30

Puede escribir una extensión para Diccionario:

extension Dictionary where Key: ExpressibleByStringLiteral, Value: AnyObject {
    func isEqual(_ dictionary: [String: AnyObject]) -> Bool {
        return NSDictionary(dictionary: dictionary).isEqual(to: self)
    }

    func isNotEqual(_ dictionary: [String: AnyObject]) -> Bool {
        return !NSDictionary(dictionary: dictionary).isEqual(to: self)
    }
}

Entonces puede comparar diccionarios [String: AnyObject] con:

FirstDictionary.isEqual(SecondDictionary)
FirstDictionary.isNotEqual(SecondDictionary)

En su caso:

var globalCountArray = [AnyObject]()
var assetDictionary = [String:AnyObject]()
globalCountArray.append(assetDictionary as AnyObject)

globalCountArray = globalCountArray.filter { (($0 as! [String: AnyObject]).isNotEqual(assetDictionary)) }
0
Roo 15 nov. 2017 a las 11:36