Swift中为GenreViewModel设置默认值失败(Apollo 1.9.3)
解决Apollo 1.9.3中初始化GenreViewModel默认值的问题
针对你遇到的无法初始化GetGenreQuery.Data.Genre来设置GenreViewModel默认值的问题,在Apollo 1.9.3版本中可以通过构造符合字段结构的_fieldData字典来实现:
修正后的代码
struct GenreViewModel: Identifiable, Hashable { let genre: GetGenreQuery.Data.Genre let id = UUID() var name: String { genre.name } static var defaultGenre: GenreViewModel { // 根据你的GraphQL查询字段构造fieldData,这里假设只有name字段 let fieldData: [String: AnyHashable] = [ "name": "默认分类" // 自定义默认名称 ] // 用构造好的fieldData初始化mock Genre实例 let mockGenre = GetGenreQuery.Data.Genre(_fieldData: fieldData) // 返回默认的GenreViewModel return GenreViewModel(genre: mockGenre) } }
关键说明
- Apollo 1.9.x生成的
GetGenreQuery.Data.Genre属于GraphQLSelectionSet子类,它的_fieldData参数接受[String: AnyHashable]类型的字典,只要字典包含查询中定义的字段键值对,就能生成可用的mock实例。 - 如果你的
Genre还有其他必填字段(比如id),需要在fieldData中补充对应的键值,避免访问字段时出现nil或崩溃。
内容的提问来源于stack exchange,提问作者Mohitkumar Gupta
相关产品推荐
相关产品推荐

