跳到主要内容
版本:0.17

故障排查

本页介绍 Swift 中常见的问题及调试方法。

常见运行时错误

Type not registered: ...

原因:当前 Fory 实例没有注册用户类型。

修复方式:

fory.register(MyType.self, id: 100)

Type mismatch: expected ..., got ...

原因:对端之间的注册映射或字段类型信息不一致。

修复方式:

  • 确保两端使用相同的 type ID 或名称映射
  • 检查字段类型是否兼容

Invalid data: xlang bitmap mismatch

原因:序列化端和反序列化端使用了不同的 xlang 配置。

修复方式:确保双方使用相同的 xlang 模式。

Invalid data: class version hash mismatch

原因:在 compatible=false 下发生了 schema 变更。

修复方式:

  • 为需要演进的 schema 启用兼容模式
  • 或保持严格的 schema 一致性

常见宏阶段错误

@ForyObject requires explicit types for stored properties

为所有存储属性补充显式类型声明。

@ForyObject enum associated values cannot have default values

移除枚举关联值上的默认值。

Set<...> with Any elements is not supported by @ForyObject yet

改用 [Any] 或明确元素类型的集合。

Dictionary<..., ...> with Any values is only supported for String, Int32, or AnyHashable keys

把 key 类型改为 StringInt32AnyHashable,或者避免在 map value 中使用动态 Any

调试命令

运行 Swift 测试:

cd swift
ENABLE_FORY_DEBUG_OUTPUT=1 swift test

运行由 Java 驱动的 Swift xlang 测试:

cd java/fory-core
ENABLE_FORY_DEBUG_OUTPUT=1 FORY_SWIFT_JAVA_CI=1 mvn -T16 test -Dtest=org.apache.fory.xlang.SwiftXlangTest