如何解决Objective C中成功回调的预期')'错误
Posted
技术标签:
【中文标题】如何解决Objective C中成功回调的预期\')\'错误【英文标题】:How to resolve Expected ')' error on a success callback in Objective C如何解决Objective C中成功回调的预期')'错误 【发布时间】:2019-08-01 09:40:34 【问题描述】:我正在尝试将 Quickblox 聊天集成到现有的 Objective C (Xcode) 应用程序中。下面在另一个应用程序中工作的方法旨在将附件发送到聊天对话框。
dispatch_async(dispatch_get_main_queue(), ^
[QBRequest TUploadFile:imageData
fileName:@"test.png"
contentType:@"image/png"
isPublic:NO
successBlock:^( QBResponse * _Nonnull response, QBCBlob * _Nonnull uploadedBlob )
QBChatAttachment *attachment = [[QBChatAttachment alloc] init];
attachment.url = uploadedBlob.privateUrl ? uploadedBlob.privateUrl : uploadedBlob.publicUrl;
attachment.ID = uploadedBlob.UID;
attachment.name = uploadedBlob.name;
attachment.type = @"image";
if ([strongSelf.delegate respondsToSelector:@selector(attachmentBar:didUpLoadAttachment:)])
[strongSelf.delegate attachmentBar:strongSelf didUpLoadAttachment:attachment];
statusBlock:^(QBRequest * _Nonnull request, QBRequestStatus * _Nonnull status)
CGFloat progress = status.percentOfCompletion;
[strongSelf updateLoadingProgress:progress];
errorBlock:^(QBResponse * _Nonnull response)
if ([strongSelf.delegate respondsToSelector:@selector(attachmentBarFailedUpLoadImage:)])
[strongSelf.delegate attachmentBarFailedUpLoadImage:strongSelf];
];
);
但 succesBlock 回调一直抛出预期的 ')' 错误
successBlock:^( QBResponse * _Nonnull response, QBCBlob * _Nonnull uploadedBlob )
完整的错误如下图所示
我做错了什么。
【问题讨论】:
只是一个猜测,但可能是您错过了导入某些内容,因此编译器无法识别 QBResponse。 @Pankaj QBResponse 在 QuickBlox 框架的标头中被引用。一个命令点击链接到参考 我这么说,bcz已经有一个错误提示前向类对象,这清楚地表明你仍然需要导入一些东西。 @kplus -- 如果删除_Nonnull
关键字会发生什么?
@kplus - 您发布的图片似乎表明 successBlock:
行存在 3 个问题...也许 Expected )
是由另一个错误引起的?
【参考方案1】:
预期的')'错误实际上是由@DonMag 和@Pankaj Gaikar 怀疑的另一个错误引起的。
错误是
"use of undeclared identifier QBRequest"
即使点击上述 QBRequest 的命令会获取指向 Quickblox.h 参考的链接,但我意识到 ChatAttachment 类并不是真正的 Quickblox.h。
所以解决方案是在 prefix.pch 文件中导入 Quickblox.h。
如果您的应用程序还没有 prefix.pch 文件,这里是创建 prefix.pch 文件的步骤。
从 Xcode 菜单中,选择 File > New > File...
从 ios 模板选项中,选择其他 > PCH 文件。
将文件命名为 -Prefix.pch,然后选择“创建”。
从目标的构建设置中,选择全部,然后将以下内容添加到前缀标题字段
$(SRCROOT)/-Prefix.pch
我希望这对某人有所帮助。
【讨论】:
以上是关于如何解决Objective C中成功回调的预期')'错误的主要内容,如果未能解决你的问题,请参考以下文章
从 Swift 调用 Objective C 和 C 传递回调函数