修复定位的回调问题
This commit is contained in:
@@ -43,6 +43,14 @@ public typealias BridgeCallback = @Sendable (BridgeData?) -> Void
|
||||
public enum BridgeData: Sendable {
|
||||
case string(String)
|
||||
case number(Double)
|
||||
/// 定点小数。序列化成 JSON **数字**,但保留给定的小数位数文本。
|
||||
///
|
||||
/// 为什么不用 `.number(Double)`:`JSONSerialization` 写 Double 会输出 17 位有效
|
||||
/// 数字,`28.636486` 变成 `28.636486000000001`。虽然 JS `JSON.parse` 出来是同一个
|
||||
/// IEEE754 double(H5 侧不可分辨),但 JSON **文本**与原工程不一致。
|
||||
/// `getlocationinfo` 的经纬度要求与 msext 老 UIWebView 路径
|
||||
/// (`RootVC.m:1998` 拼 `\"latitude\":%f`)的字面文本对齐,故走这条。
|
||||
case decimal(Decimal)
|
||||
case bool(Bool)
|
||||
case null
|
||||
case array([BridgeData])
|
||||
@@ -89,6 +97,7 @@ extension BridgeData {
|
||||
switch self {
|
||||
case .string(let s): return s
|
||||
case .number(let d): return d
|
||||
case .decimal(let d): return d as NSDecimalNumber
|
||||
case .bool(let b): return b
|
||||
case .null: return NSNull()
|
||||
case .array(let arr): return arr.map { $0.jsonObject }
|
||||
@@ -124,6 +133,7 @@ extension BridgeData {
|
||||
return String(Int(d))
|
||||
}
|
||||
return String(d)
|
||||
case .decimal(let d): return "\(d)"
|
||||
case .bool(let b): return b ? "true" : "false"
|
||||
case .null: return nil
|
||||
case .array, .object: return nil
|
||||
@@ -131,8 +141,11 @@ extension BridgeData {
|
||||
}
|
||||
|
||||
nonisolated public var asDouble: Double? {
|
||||
if case .number(let d) = self { return d }
|
||||
return nil
|
||||
switch self {
|
||||
case .number(let d): return d
|
||||
case .decimal(let d): return (d as NSDecimalNumber).doubleValue
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
|
||||
nonisolated public var asInt: Int? {
|
||||
|
||||
Reference in New Issue
Block a user