Flutter 2.10.5 iOS构建失败:AppDelegate.swift多类错误求助
问题分析与解决
这些错误的根本原因是你的AppDelegate.swift文件里混入了Objective-C语法,Swift编译器无法识别OC的语法规则,因此抛出编译错误。这并非Flutter生成代码的问题,大概率是手动修改代码时误将OC代码粘贴进Swift文件,或是某个插件的配置脚本出错导致写入了错误代码。
具体修复步骤:
- 打开项目中的
ios/Runner/AppDelegate.swift文件,定位到报错的第11-12行代码:
// 错误的OC风格代码 if (@available(iOS 10.0, *)) { [UNUserNotificationCenter currentNotificationCenter].delegate = (id<UNUserNotificationCenterDelegate>) self; }
- 将这段代码替换为符合Swift语法的写法:
// 正确的Swift代码 if #available(iOS 10.0, *) { UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate }
- 额外检查:确保
AppDelegate类已声明遵循UNUserNotificationCenterDelegate协议,避免委托赋值警告,修改类声明如下:
@UIApplicationMain @objc class AppDelegate: FlutterAppDelegate, UNUserNotificationCenterDelegate { // 你的其他代码... }
错误点说明:
- Swift的系统版本可用性检查用
#available,而非OC的@available - Swift获取UNUserNotificationCenter单例用
current()方法,OC的currentNotificationCenter类方法在Swift中不兼容 - Swift的类型转换用
as?/as!,OC的(id<Protocol>)强制转换语法在Swift中无效
内容的提问来源于stack exchange,提问作者Kantine
相关产品推荐
相关产品推荐

