Private
Public Access
1
0

Get swifty

This commit is contained in:
2025-08-24 18:54:50 -07:00
parent b38df68eb2
commit 126a4cc55f
3 changed files with 94 additions and 53 deletions

View File

@@ -78,6 +78,15 @@ extension Array: XPCConvertible where Element: XPCConvertible
extension xpc_object_t
{
func getObject(_ key: String) -> xpc_object_t? {
var raw: xpc_object_t?
key.withCString { cKey in
raw = xpc_dictionary_get_value(self, cKey)
}
return raw
}
func get<T: XPCConvertible>(_ key: String) -> T? {
var raw: xpc_object_t?
key.withCString { cKey in
@@ -88,7 +97,42 @@ extension xpc_object_t
return T.fromXPC(value)
}
subscript<T: XPCConvertible>(key: String) -> T? {
return get(key)
subscript<T: XPCConvertible>(key: String) -> T? { return get(key) }
var isDictionary: Bool { xpc_get_type(self) == XPC_TYPE_DICTIONARY }
var isArray: Bool { xpc_get_type(self) == XPC_TYPE_ARRAY }
}
// MARK: - Dictionary wrapper
struct XPCDictionary
{
let raw: xpc_object_t
init?(_ value: xpc_object_t) {
guard xpc_get_type(value) == XPC_TYPE_DICTIONARY else { return nil }
self.raw = value
}
func object(_ key: String) -> xpc_object_t? {
var rawValue: xpc_object_t?
key.withCString { cKey in
rawValue = xpc_dictionary_get_value(raw, cKey)
}
return rawValue
}
func get<T: XPCConvertible>(_ key: String) -> T? {
guard let value = object(key) else { return nil }
return T.fromXPC(value)
}
subscript<T: XPCConvertible>(_ key: String) -> T? { return get(key) }
}
extension XPCDictionary
{
static func wrap(_ value: xpc_object_t) -> XPCDictionary? {
return XPCDictionary(value)
}
}