Tengo una matriz de Section objetos

class Section: NSObject {

    enum SectionType : String {
        case Name = "NAME"
        case Address = "ADDRESS"
        case Phone = "PHONE"
    }
    var type : SectionType = .Name
} 

Necesito aplicar el predicado en la propiedad type

let predicate = NSPredicate(format: "SELF.type == %d", SectionType.Name.rawValue)
let filteredArray = (preferenceSections as NSArray).filteredArrayUsingPredicate(predicate) //CRASH 
if filteredArray.count > 0 {

}

La aplicación falla con Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Mobile.Section 0x7fb120d33c50> valueForUndefinedKey:]: this class is not key value coding-compliant for the key type.', pero el objeto de sección tiene la propiedad type, que es una enumeración de cadena.

Ayúdame a solucionar el problema

0
Saif 23 ago. 2016 a las 13:01

2 respuestas

La mejor respuesta

El mensaje de error lo dice todo. No hay mapeo de su tipo de enumeración a un tipo Objective-C, lo que significa que la propiedad no es "compatible con la codificación del valor clave". Debería utilizar un tipo enum : Int más simple para que esto se asigne automáticamente.

1
Patrick Beard 23 ago. 2016 a las 10:26

Utilice "% @" en lugar de "% d".

Let predicate = NSPredicate (formato: "SELF.type ==% @", SectionType.Name.rawValue)

0
Punit 23 ago. 2016 a las 10:21