Я делаю следующую фильтрацию, которая возвращает список рецептов, отфильтровываемых по названию данной категории.Если фильтр возвращает 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
}
})
Этот фильтр работает совместно с SearchBar TextField, поэтому я, возможно, имеют случайное значение в текстовое поле, которое сделает filteredRecipe
держать недостоверные данные.
Мне нужно убедиться, что фильтр не может найти рецепт от filteredRecipe
с данным значением указанной категории, я оставляю filteredRecipe
нетронутым. В настоящее время, когда нет совпадения, он делает filteredRecipe
пустой массив []
. Я не уверен, какая часть это вызывает.
Я не знаком с этим языком, но в большинстве языков, как это, вы должны быть в состоянии просто добавить еще один '.filter ({$ 0! = Ноль})' до конца первого фильтра ' (...) 'call. Итак, 'filterRecipe.filter (/ * ваш исходный код фильтра * /). Filter ({$ 0! = Nil})' не должен работать? – gmiley
как насчет 'if let name = category.valueForKey (" name ") as? String, a = name.rangeOfString (cap) {return a} else {return false} ' –
Вы пробовали просто вернуть' filterRecipe'? – Lawrence413