跳到主要内容
版本:0.17

字段配置

本页介绍 Swift 宏层面的字段配置。

可用的宏属性

  • 作用于 struct/class/enum 的 @ForyObject
  • 作用于数值字段的 @ForyField(encoding: ...)

@ForyField(encoding:)

@ForyField 覆盖整数编码策略。

@ForyObject
struct Metrics: Equatable {
@ForyField(encoding: .fixed)
var u32Fixed: UInt32 = 0

@ForyField(encoding: .tagged)
var u64Tagged: UInt64 = 0
}

支持的组合

Swift 类型支持的编码值默认编码
Int32.varint.fixed.varint
UInt32.varint.fixed.varint
Int64.varint.fixed.tagged.varint
UInt64.varint.fixed.tagged.varint
Int.varint.fixed.tagged.varint
UInt.varint.fixed.tagged.varint

编译期会拒绝不受支持的组合,例如给 Int32 使用 .tagged

@ForyObject 的要求

struct 和 class 字段

  • 存储属性必须声明显式类型
  • 计算属性会被忽略
  • 静态属性和类属性会被忽略

类类型要求

@ForyObject 标记的类必须提供 required init() 以支持默认构造。

@ForyObject
final class Node {
var value: Int32 = 0
var next: Node? = nil

required init() {}
}

宏类型中的动态 Any 字段

@ForyObject 支持以下动态字段和嵌套容器:

  • AnyAnyObjectany Serializer
  • AnyHashable
  • [Any]
  • [String: Any]
  • [Int32: Any]
  • [AnyHashable: Any]

当前限制:

  • Dictionary<K, Any> 仅在 KStringInt32AnyHashable 时受支持