Ошибка компилятора при использовании enumerateObjectsUsingBlock из PHFetchResult

Я встретил следующую ошибку компиляции:

Невозможно вызвать enumerateObjectsUsingBlock со списком аргументов типа ((_, _, _) -> Void) '

Я думаю, что мне будет легче понять мою ситуацию с этим снимком экрана XCode6.3.

введите описание изображения здесь

Эти коды предназначены для тестирования выборки объектов PHAsset с использованием метода fetchAssetsWithMediaType. Как вы, возможно, знаете, этот метод возвращает PHFetchResult, у которого есть методы перечисления. Я попытался пронумеровать все объекты в результате по enumerateObjectsUsingBlock. К сожалению, компилятор Swift выдал мне ошибку. После долгого расследования я пришел к выводу, что этот код правильный.

Для вашей информации, приведенный выше код был найден в Google для тестирования PHAsset.


person Kyokook Hwang    schedule 12.04.2015    source источник


Ответы (1)


Я наконец нашел ответ на свой вопрос. первым параметром блока enumerateObjectsUsingBlock является AnyType!. Следовательно, аргумент obj для метода append должен быть понижен на as!.

В любом случае, я думаю, что сообщение об ошибке не совсем точно указывает на эту ошибку. Кажется, что компилятор выдает такое сообщение об ошибке программисту, когда что-то не так в блоке.

person Kyokook Hwang    schedule 18.04.2015
comment
Да, однако его необходимо уменьшить как AnyObject!, а не AnyType! - person world; 02.05.2016