2017-01-24 2 views
0

Ich habe eine Abrufanforderung, die mit einigen Daten zurückkommt, die ich filtern möchte, so:Swift: Kann 'filter' mit einer Argumentliste vom Typ '((Any) throws -> Bool) nicht aufrufen'

// Set up fetch request 
let finalVariants : [DBVariant] 
do { 
    let variants = try context.fetch(request) 
    finalVariants = variants.filter() { $0.variant == true } 
} catch let error as NSError { 
    // Handle error 
    finalVariants = [] 
} 

diesen Code schreiben, Xcode gibt mir den Fehler im Titel:

Cannot invoke 'filter' with an argument list of type '((Any) throws -> Bool)' 

der Code in dem Filterblock nicht werfen, mit der Unterschrift des Filterblock in einen separaten var bewegen (Any) -> Bool hat nicht geholfen.

Antwort

0

Die Antwort stellte sich heraus, dass ich nicht auspacken und Art der optionalen Ergebnis der Abrufanforderung zuweisen, so dass der Arbeits Code wie folgt aussieht:

// Set up fetch request 
let finalVariants : [DBVariant] 
do { 
    let variantsResult = try context.fetch(request) 
    if let variants = variantsResult as? [DBVariant] { 
    finalVariants = variants.filter() { $0.variant == true } 
    } else { 
     finalVariants = [] 
    } 
} catch let error as NSError { 
    // Handle error 
    finalVariants = [] 
} 
Verwandte Themen