2016-04-30 2 views
1

Я делаю следующую фильтрацию, которая возвращает список рецептов, отфильтровываемых по названию данной категории.Если фильтр возвращает 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 пустой массив []. Я не уверен, какая часть это вызывает.

+0

Я не знаком с этим языком, но в большинстве языков, как это, вы должны быть в состоянии просто добавить еще один '.filter ({$ 0! = Ноль})' до конца первого фильтра ' (...) 'call. Итак, 'filterRecipe.filter (/ * ваш исходный код фильтра * /). Filter ({$ 0! = Nil})' не должен работать? – gmiley

+0

как насчет 'if let name = category.valueForKey (" name ") as? String, a = name.rangeOfString (cap) {return a} else {return false} ' –

+1

Вы пробовали просто вернуть' filterRecipe'? – Lawrence413

ответ

4

Вам необходимо назначить результат фильтрации временной переменной и проверить, что она не пуста.

let filtered = filteredRecipe.filter({ 
    if let category = $0.valueForKey("category") as? NSManagedObject { 
     if let name = category.valueForKey("name") as? String { 
      return name.rangeOfString(cap) != nil 
    } 
    return false 
}) 

if !filtered.isEmpty { 
    filteredRecipe = filtered 
} 
+0

Я пробовал это, но он все еще делает 'filterRecipe' пустым массивом [] –

+0

В вашей первоначальной проблеме вы сказали, что' filterRecipe' было нуль. Действительно ли это пустой массив? – Paulw11

+0

На самом деле, 'filter' возвращает' nil' или 0 длину коллекции? – gmiley

Смежные вопросы