跳到主要内容
版本:0.16

故障排查

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

常见运行时错误

错误:Type not registered: ...

原因:用户类型尚未在当前 Fory 实例上注册。

修复方式:

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

错误:Type mismatch: expected ..., got ...

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

修复方式:

  • 确保两端注册的是同一套类型 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

移除 enum case 关联值上的默认值。

宏错误:Set<...> with Any elements is not supported by @ForyObject yet

改用 [Any] 或显式类型的集合。

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

将键类型改为 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