私は、指定されたカテゴリ名の値でフィルタリングされたレシピリストを返す次のフィルタリングを行っています。私はおそらく信頼できないデータを保持するためにfilteredRecipe
を行いますテキストフィールドにランダムな値を持つことになりますので、フィルタがnilを返す場合、空の結果を返さない方法を教えてください。
filteredRecipe = filteredRecipe.filter({
if let category = $0.valueForKey("category") as? NSManagedObject {
if let name = category.valueForKey("name") as? String {
return name.rangeOfString(cap) != nil
} else {
return false
}
} else {
return false
}
})
このフィルタは、検索バーのテキストフィールドに関連して動作します。
filteredRecipe
のレシピが特定のカテゴリ名の値で見つからない場合は、filteredRecipe
のままにしておく必要があります。 現在、一致がない場合、filteredRecipe
は空の配列[]
になります。私はどの部分がこれを引き起こすのか分からない。
私は、この言語に精通していないんだけど、このような多くの言語では、あなたは、単にあなたの最初の 'フィルタの最後に別の' .filter({$ 0!= nilの}) 'を追加することができるはずです(...) '呼び出し。 'filteredRecipe.filter(/ *元のフィルタコード* /)。filter({$ 0!= nil})'は動作しません。 – gmiley
どうすれば 'let name = category.valueForKey(" name ")?文字列、a = name.rangeOfString(上限){戻り値} else {戻り値false} ' –
' filteredRecipe'を返してみましたか? – Lawrence413