#swift
#swift
Вопрос:
У меня есть массив объектов, которые все принадлежат классу PFObject
. У меня есть подкласс PFObject
called GameCategory
, в котором находятся некоторые из PFObject
s в моем массиве GameCategory
.
Мне было интересно, как написать инструкцию first / where, которая проверяла бы каждый объект на предмет того, относится ли он к классу GameCategory, а затем проверяла соответствующий идентификатор.
Вот моя нерабочая попытка сделать это:
for id in Ids {
if let object = self.matchObjects.first(where: {
if let gameCategory = $0 as? GameCategory {
gameCategory.id == id
}
}) {
//object successfully cast as GameCategory, and the GameCategory id was a match
}
}
Этот код возвращает ошибку ‘Отсутствует возврат в замыкании, которое, как ожидается, вернет ‘Bool’.
Комментарии:
1.
where
Закрытие должно возвращатьBool
значение, о чем ясно говорится в ошибке. Чего вы собираетесь достичь? На данный момент кажется, чтоid
первый найденныйGameCategory
экземпляр перезаписывается на каждой итерации цикла.
Ответ №1:
В вашем коде отсутствует возврат в этом first(where:
замыкании и приведении как GameCategory
(ваше приведение существует только в области этого замыкания). Я написал его немного по-другому, но он достигнет того же самого:
for id in Ids {
if let object = self.matchObjects.first(where: { ($0 as? GameCategory)?.id == id }) as? GameCategory {
//object cast as GameCategory and the id was a match
}
}
Комментарии:
1. Спасибо! Я знал, что это должна быть какая-то проблема с синтаксисом.