You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amplify Swift:AWSPredictionsPlugin初始化因internal保护级别无法访问

AWSPredictionsPlugin初始化器不可访问问题解决办法

问题根源

AWSPredictionsPlugin的默认初始化器被设为internal访问级别,无法直接在你的代码中调用,这是Amplify iOS SDK的设计要求,必须通过指定配置的方式创建插件实例。

修复方案

替换初始化代码

把直接创建AWSPredictionsPlugin()的代码,改成使用带配置参数的初始化方式,并且将这行代码移入do-catch块内(因为初始化会抛出错误):

修改前:

let predictions = AWSPredictionsPlugin()

修改后:

let predictions = try AWSPredictionsPlugin(configuration: .default)

完整的configureAmplify方法示例

func configureAmplify() {
    let apiPlugin = AWSAPIPlugin(modelRegistration: AmplifyModels())
    let dataStorePlugin = AWSDataStorePlugin(modelRegistration: AmplifyModels())
    let s3 = AWSS3StoragePlugin()
    let cognitoAuth = AWSCognitoAuthPlugin()
    
    do {
        // 使用默认配置创建Predictions插件
        let predictions = try AWSPredictionsPlugin(configuration: .default)
        
        try Amplify.add(plugin: apiPlugin)
        try Amplify.add(plugin: dataStorePlugin)
        try Amplify.add(plugin: s3)
        try Amplify.add(plugin: cognitoAuth)
        try Amplify.add(plugin: predictions)
        try Amplify.configure()
        print("Initialized Amplify")
    } catch {
        print("Could not initialize Amplify: \(error)")
    }
}

可选:自定义插件配置

如果需要对预测服务(比如识别、翻译、理解功能)做自定义设置,可以手动创建配置对象:

let predictionsConfig = AWSPredictionsPluginConfiguration(
    convert: ConvertConfiguration(defaultLanguage: .english),
    identify: IdentifyConfiguration(),
    interpret: InterpretConfiguration()
)
let predictions = try AWSPredictionsPlugin(configuration: predictionsConfig)

为什么你的尝试没效果

  • 修改FrenchAppApp的init访问级别:问题出在AWSPredictionsPlugin内部的初始化器权限,和你自己的App结构体初始化器无关。
  • 继承AWSPredictionsPlugin重写init:父类的初始化器是internal,子类无法调用或重写这个初始化器,因此这种方式无法绕过权限限制。

内容的提问来源于stack exchange,提问作者Andrea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:07:40