Контекстный тип ‘NSFastEnumeration’ не может использоваться с литералом массива

#ios #swift #swift3

#iOS #swift #swift3

Вопрос:

Swift 3, вы бы это сделали?

 let changeRequest = PHAssetCollectionChangeRequest(...)
let fastEnumeration = NSArray(array: [PHObjectPlaceholder])
albumChangeRequest?.addAssets(fastEnumeration)
  

или это?

 let changeRequest = PHAssetCollectionChangeRequest(...)
albumChangeRequest?.addAssets([PHObjectPlaceholder] as NSFastEnumeration)
  

и в чем разница?

Ответ №1:

Как вы обнаружили (ваш код имеет некоторую несогласованность и вызывает другие ошибки, лучше обновите его), вы не можете использовать as -casting для указания типа для литералов массива как NSFastEnumeration .

Вам нужно найти подходящий класс, который соответствует NSFastEnumeration , в вашем случае это NSArray .

Обычно пишут что-то вроде этого:

 changeRequest?.addAssets([/* needs instances, not type...*/] as NSArray)
  

Комментарии:

1. Комментарий — не самое подходящее место для описания вашей собственной проблемы. Лучше начните новый собственный поток. Многие люди читают новые темы, но редко находят новый комментарий в старой теме. Что касается меня, я никогда не видел такого же исключения и не могу вам помочь.