Get swifty
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user