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.
 
 
 
 
 
open-im-sdk-flutter-m/ios/Classes/Util/FlutterMethodCall+Extension...

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)
}
}