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

Swift中如何在自定义初始化器中向ModelContainer(for:)传可变参数?

解决Swift中PersistentModel初始化器的Variadic参数错误

错误原因分析

  1. 第一个错误:你将any PersistentModel.Type...类型的可变参数数组直接传递给另一个同类型的可变参数,Swift要求必须显式展开数组才能匹配可变参数的输入形式。
  2. 第二个错误:Swift 5.7及以后版本规定,将协议作为具体类型使用时必须添加any关键字,因此不能直接移除any。

解决方案

在传递参数给ModelContainer初始化器时,使用**展开运算符***将可变参数数组拆分为独立参数:

init(for forTypes: any PersistentModel.Type...) {
    container = try? ModelContainer(for: *forTypes)
}

补充说明

如果ModelContainer提供了接受数组类型参数的初始化器(如init(for: [any PersistentModel.Type])),也可以直接传递数组:

init(for forTypes: any PersistentModel.Type...) {
    container = try? ModelContainer(for: forTypes)
}

两种方式都能解决你的问题,选择哪种取决于你使用的SwiftData版本和初始化器的可用形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:37:53