You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.8 KiB
109 lines
2.8 KiB
//
|
|
// FlutterMethodCall+Extension.swift
|
|
// flutter_openim_sdk
|
|
//
|
|
// Created by willem on 2021/10/9.
|
|
//
|
|
|
|
import Foundation
|
|
import Flutter
|
|
|
|
public protocol Stringable {
|
|
var rawValue: String { get }
|
|
}
|
|
|
|
extension String: Stringable {
|
|
public var rawValue: String { self }
|
|
}
|
|
|
|
public extension FlutterMethodCall {
|
|
subscript(_ key: Stringable) -> Any? {
|
|
guard let params = self.arguments as? [String: Any] else {
|
|
return nil
|
|
}
|
|
return params[key.rawValue]
|
|
}
|
|
|
|
subscript(string key: Stringable) -> String {
|
|
return self[key] as? String ?? ""
|
|
}
|
|
|
|
subscript(jsonString key: Stringable) -> String {
|
|
guard let params = self.arguments as? [String: Any] else {
|
|
return ""
|
|
}
|
|
let arg = params[key.rawValue] as AnyObject
|
|
return JsonUtil.toString(object: arg)
|
|
}
|
|
|
|
subscript(int32 key: Stringable) -> Int32 {
|
|
guard let value = self[key] else {
|
|
return 0
|
|
}
|
|
if let value = value as? Int32 {
|
|
return value
|
|
} else if let value = value as? String {
|
|
return Int32(value) ?? 0
|
|
}
|
|
return 0
|
|
}
|
|
|
|
subscript(int64 key: Stringable) -> Int64 {
|
|
guard let value = self[key] else {
|
|
return 0
|
|
}
|
|
if let value = value as? Int64 {
|
|
return value
|
|
} else if let value = value as? String {
|
|
return Int64(value) ?? 0
|
|
}
|
|
return 0
|
|
}
|
|
|
|
subscript(int key: Stringable) -> Int {
|
|
guard let value = self[key] else {
|
|
return 0
|
|
}
|
|
if let value = value as? Int {
|
|
return value
|
|
} else if let value = value as? String {
|
|
return Int(value) ?? 0
|
|
}
|
|
return 0
|
|
}
|
|
|
|
subscript(double key: Stringable) -> Double {
|
|
guard let value = self[key] else {
|
|
return 0
|
|
}
|
|
if let value = value as? Double {
|
|
return value
|
|
} else if let value = value as? String {
|
|
return Double(value) ?? 0.0
|
|
}
|
|
return 0
|
|
}
|
|
|
|
subscript(bool key: Stringable, default default: Bool = false) -> Bool {
|
|
guard let value = self[key] else {
|
|
return `default`
|
|
}
|
|
if let value = value as? Bool {
|
|
return value
|
|
} else if let value = value as? Int {
|
|
return value != 0
|
|
} else if let value = value as? NSString {
|
|
return value.boolValue
|
|
}
|
|
return `default`
|
|
}
|
|
|
|
subscript(dict key: Stringable) -> [AnyHashable: Any] {
|
|
return self[key] as? [AnyHashable: Any] ?? [:]
|
|
}
|
|
|
|
func toJsonString() -> String {
|
|
let params = self.arguments as AnyObject
|
|
return JsonUtil.toString(object: params)
|
|
}
|
|
}
|
|
|