/
GpsResolver.swift
50 lines (38 loc) · 1.33 KB
/
GpsResolver.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// GpsResolver.swift
// sdk-xyo-swift
//
// Created by Kevin Weiler on 10/28/19.
//
import Foundation
import sdk_core_swift
public struct GpsResolver: XyoHumanHeuristicResolver {
public init() {}
public func getHumanKey(partyIndex: Int) -> String {
return String(format: NSLocalizedString("GPS %d", comment: "gps value"), partyIndex)
}
public func getHumanName (object: XyoObjectStructure, partyIndex: Int) throws -> String? {
guard let gps = object as? XyoIterableStructure else {
return nil
}
guard let lat = try gps.get(id: XyoSchemas.LAT.id).first?.getValueCopy() else {
return nil
}
guard let lng = try gps.get(id: XyoSchemas.LNG.id).first?.getValueCopy() else {
return nil
}
if lng.getSize() != 8 || lat.getSize() != 8 {
return nil
}
let latNumData = Double(bitPattern: lat.getUInt64(offset: 0))
let lngNumData = Double(bitPattern: lng.getUInt64(offset: 0))
return "\(latNumData), \(lngNumData)"
}
}
extension XyoBoundWitness {
public func resolveGPSPayload(forParty: Int) -> String? {
let resolver = GpsResolver()
XyoHumanHeuristics.resolvers[XyoSchemas.GPS.id] = resolver
return resolver.getName(forParty: forParty, boundWitness: self)
}
}