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

SwiftUI中如何将API字符串ID转为整数适配Blackbird存储至SQLite?

解决Blackbird中字符串类型ID作为主键的问题

针对你遇到的Blackbird主键要求问题,有两种直接的解决方式:

方式一:将字符串类型的idMeal指定为主键

直接修改@BlackbirdColumn的参数,把idMeal标记为主键,同时为了满足Identifiable协议的id属性,直接映射到idMeal即可:

struct Meal: Identifiable, Codable, BlackbirdModel {
    @BlackbirdColumn(primaryKey: true) var idMeal: String
    @BlackbirdColumn var strMeal: String
    @BlackbirdColumn var strMealThumb: String
    
    // 实现Identifiable协议的id属性
    var id: String { idMeal }
}

这种方式直接复用API返回的唯一标识,能避免数据库中出现重复的餐品数据,同时完全符合Blackbird的主键要求。

方式二:添加自增整数主键,保留原字符串ID

如果不需要用idMeal作为数据库主键,可以新增一个自增的整数类型id字段作为Blackbird的主键,同时通过编码键忽略该字段,避免API解码出错:

struct Meal: Identifiable, Codable, BlackbirdModel {
    @BlackbirdColumn(primaryKey: true, autoIncrement: true) var id: Int?
    @BlackbirdColumn var idMeal: String
    @BlackbirdColumn var strMeal: String
    @BlackbirdColumn var strMealThumb: String
    
    // 解码时忽略自增id字段
    enum CodingKeys: String, CodingKey {
        case idMeal, strMeal, strMealThumb
    }
}

这种方式适合只需要数据库内部主键的场景,注意id要设为可选类型,因为插入数据时Blackbird会自动生成自增值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:21