Downcast from разворачивает только необязательные параметры; Вы хотели использовать '!'?

У меня есть эта странная ошибка, и я не знаю, как ее исправить.

guard let theDialogObjects = dialogObjects as! [QBChatDialog]

Понижен от «[QBChatDialog]?» to '[QBChatDialog]' разворачивает только необязательные параметры; Вы хотели использовать '!'?

код взят отсюда: https://github.com/QuickBlox/q-municate-services-ios/blob/master/QMChatService/QMChatService/QMChatService.m

- (void)allDialogsWithPageLimit:(NSUInteger)limit
                extendedRequest:(NSDictionary *)extendedRequest
                 iterationBlock:(void(^)(QBResponse *response, NSArray *dialogObjects, NSSet *dialogsUsersIDs, BOOL *stop))iterationBlock
                     completion:(void(^)(QBResponse *response))completion {

Вот как я использую его в Swift:

QMServicesManager.instance().chatService.allDialogsWithPageLimit(UInt.max, extendedRequest: ["type":String(QBChatDialogType.Private.rawValue)], iterationBlock: { (response, dialogObjects, userIDs, stop) in

      guard let theDialogObjects = dialogObjects as! [QBChatDialog]{
        return
      }

person Matrosov Alexander    schedule 19.04.2016    source источник
comment
Какого типа диалоговые объекты?   -  person Evdzhan Mustafa    schedule 19.04.2016
comment
просто попробуйте заменить '!' по '?'   -  person Jan    schedule 19.04.2016
comment
@EvdzhanMustafa dialogObject — это NSArray)   -  person Matrosov Alexander    schedule 19.04.2016
comment
@Shameerjan да, у меня действительно было? вместо этого, и это было с ошибкой заменить на ! но я не заменил его, как в моей строке кода выше, и все та же ошибка   -  person Matrosov Alexander    schedule 19.04.2016
comment
dialogObjects не может быть NSArray, если вы получаете указанное сообщение об ошибке. Не могли бы вы предоставить минимальный готовый образец?   -  person Evdzhan Mustafa    schedule 19.04.2016
comment
@EvdzhanMustafa Я добавил это к моему вопросу, спасибо, да, это массив)   -  person Matrosov Alexander    schedule 19.04.2016
comment
как насчет этого - охранять пусть theDialogObjects:[QBChatDialog] = dialogObjects как! [QBChatDialog]   -  person Jan    schedule 20.04.2016


Ответы (1)


Из сообщения об ошибке вы не пытаетесь изменить тип, просто проверьте, что значение не равно нулю, поэтому ваша проверка должна быть:

guard let theDialogObjects = dialogObjects else ...
person Wain    schedule 19.04.2016