Polymorphism and Dynamic Types
Fory Swift supports dynamic serialization for Any, AnyObject, and any Serializer.
Top-level Dynamic APIs
let fory = Fory()
let dynamic: Any = Int32(7)
let data = try fory.serialize(dynamic)
let decoded: Any = try fory.deserialize(data)
Equivalent overloads exist for:
AnyObjectany SerializerAnyHashable[Any][String: Any][Int32: Any][AnyHashable: Any]
Dynamic Fields in @ForyObject Types
@ForyObject
struct DynamicHolder {
var value: Any = ForyAnyNullValue()
var list: [Any] = []
var byName: [String: Any] = [:]
var byId: [Int32: Any] = [:]
var byDynamicKey: [AnyHashable: Any] = [:]
}
Concrete Type Registration Still Applies
If dynamic values contain user-defined runtime types, register those concrete types.
@ForyObject
struct Address {
var street: String = ""
var zip: Int32 = 0
}
let fory = Fory()
fory.register(Address.self, id: 100)
Null Semantics
Anynull representation:ForyAnyNullValueAnyObjectnull representation:NSNull- Optional dynamic values map to the corresponding null representation on decode
Current Limitations
AnyHashablekeys must wrap runtime values that are bothHashableand supported by Fory dynamic serialization