JKSwiftExtension,测试用例在 FoundationExtensionViewController.swift 对应的控制器里面
目录:
1、Double+Extension
2、Int+Extension
3、Int64+Extension
4、CGFloat+Extension
5、Character+Extension
6、Bool+Extension
7、UInt+Extension
8、Float+Extension
一、Double+Extension
// MARK:- 一、Double 的基本转换 extension Double { // MARK: 1.1、转 Int /// 转 Int public var int: Int { return Int(self) } // MARK: 1.2、转 CGFloat /// 转 CGFloat public var cgFloat: CGFloat { return CGFloat(self) } // MARK: 1.3、转 Int64 /// 转 Int64 public var int64: Int64 { return Int64(self) } // MARK: 1.4、转 Float /// 转 Float public var float: Float { return Float(self) } // MARK: 1.5、转 String /// 转 String public var string: String { return String(self) } // MARK: 1.6、转 NSNumber /// 转 NSNumber public var number: NSNumber { return NSNumber.init(value: self) } // MARK: 1.7、转 Double /// 转 Double public var double: Double { return self } }
二、Int+Extension
// MARK:- 一、Int 与其他类型的转换 public extension Int { // MARK: 1.1、转 Double /// 转 Double var toDouble: Double { return Double(self) } // MARK: 1.2、转 Float /// 转 Float var toFloat: Float { return Float(self) } // MARK: 1.3、转 Int64 /// 转 Int64 var toInt64: Int64 { return Int64(self) } // MARK: 1.4、转 CGFloat /// 转 CGFloat var toCGFloat: CGFloat { return CGFloat(self) } // MARK: 1.5、转 String /// 转 String var toString: String { return String(self) } // MARK: 1.6、转 UInt /// 转 UInt var toUInt: UInt { return UInt(self) } // MARK: 1.7、转 range /// 转 range var range: CountableRange<Int> { return 0..<self } } // MARK:- 二、其他常用方法 public extension Int { // MARK: 2.1、取区间内的随机数,如取 0..<10 之间的随机数 /// 取区间内的随机数,如取 0..<10 之间的随机数 /// - Parameter within: 0..<10 /// - Returns: 返回区间内的随机数 static func random(within: Range<Int>) -> Int { let delta = within.upperBound - within.lowerBound return within.lowerBound + Int(arc4random_uniform(UInt32(delta))) } // MARK: 2.2、转换万单位 /// 转换万的单位 /// - Parameter scale: 小数点后舍入值的位数,默认 1 位 /// - Returns: 返回万的字符串 func toTenThousandString(scale: Int = 1) -> String { if self < 0 { return "0" } else if self <= 9999 { return "\(self)" } else { let doub = CGFloat(self) / 10000 let str = String(format: "%.\(scale)f", doub) let start_index = str.index(str.endIndex, offsetBy: -1) let suffix = String(str[start_index ..< str.endIndex]) if suffix == "0" { let toIndex = str.index(str.endIndex, offsetBy: -2) return String(str[str.startIndex ..< toIndex]) + "万" } else { return str + "万" } } } }
三、Int64+Extension
// MARK:- 一、Int64 与其他类型的转换 public extension Int64 { // MARK: 1.1、转 Int /// 转 Int var toInt: Int { return Int(self) } // MARK: 1.2、转 CGFloat /// 转 CGFloat var toCGFloat: CGFloat { return CGFloat(self) } // MARK: 1.3、转 Float /// 转 Float var toFloat: Float { return Float(self) } // MARK: 1.4、转 Double /// 转 Double var toDouble: Double { return Double(self) } // MARK: 1.5、转 String /// 转 String var toString: String { return String(self) } // MARK: 1.6、转 NSNumber /// 转 NSNumber var toNumber: NSNumber { return NSNumber.init(value: self) } // MARK: 1.7、转 Int64 /// 转 Int64 var toInt64: Int64 { return self } }
四、CGFloat+Extension
// MARK:- 一、CGFloat 的基本转换 extension CGFloat { // MARK: 1.1、转 Int /// 转 Int public var int: Int { return Int(self) } // MARK: 1.2、转 CGFloat /// 转 CGFloat public var cgFloat: CGFloat { return self } // MARK: 1.3、转 Int64 /// 转 Int64 public var int64: Int64 { return Int64(self) } // MARK: 1.4、转 Float /// 转 Float public var float: Float { return Float(self) } // MARK: 1.5、转 String /// 转 String public var string: String { return String(self.double) } // MARK: 1.6、转 NSNumber /// 转 NSNumber public var number: NSNumber { return NSNumber.init(value: self.double) } // MARK: 1.7、转 Double /// 转 Double public var double: Double { return Double(self) } } // MARK:- 二、角度和弧度相互转换 extension CGFloat { // MARK: 角度转弧度 /// 角度转弧度 /// - Returns: 弧度 public func degreesToRadians() -> CGFloat { return (.pi * self) / 180.0 } // MARK: 弧度转角度 /// 角弧度转角度 /// - Returns: 角度 public func radiansToDegrees() -> CGFloat { return (self * 180.0) / .pi } }
五、Character+Extension
// MARK:- 一、Character 与其他类型的转换 public extension Character { // MARK: 1.1、Character 转 String /// Character 转 String var toString: String { return String(self) } // MARK: 1.2、Character 转 Int /// Character 转 Int var toInt: Int? { return Int(String(self)) } } // MARK:- 二、常用的属性和方法 public extension Character { // MARK: 2.1、判断是不是 Emoji 表情 /// 判断是不是 Emoj 表情 var isEmoji: Bool { return String(self).includesEmoji() } }
六、Bool+Extension
// MARK:- 一、基本的扩展 public extension Bool { // MARK: 1.1、Bool 值转 Int /// Bool 值转 Int var toInt: Int { return self ? 1 : 0 } }
七、UInt+Extension
// MARK:- 一、UInt 与其他类型的转换 extension UInt { // MARK: 1.1、转 Int /// 转 Int public var toInt: Int { return Int(self) } }
八、Float+Extension
// MARK:- 一、Float 与其他类型的转换 extension Float { // MARK: 1.1、转 Int /// 转 Int public var int: Int { return Int(self) } // MARK: 1.2、转 CGFloat /// 转 CGFloat public var cgFloat: CGFloat { return CGFloat(self) } // MARK: 1.3、转 Int64 /// 转 Int64 public var int64: Int64 { return Int64(self) } // MARK: 1.4、转 Double /// 转 Double public var double: Double { return Double(self) } // MARK: 1.5、转 String /// 转 String public var string: String { return String(self) } // MARK: 1.6、转 NSNumber /// 转 NSNumber public var number: NSNumber { return NSNumber.init(value: self) } // MARK: 1.7、转 Float /// 转 Float public var float: Float { return self } } // MARK:- 二、其他常用的方法 public extension Float { // MARK: 2.1、浮点数四舍五入 /// 浮点数四舍五入,places /// - Parameter places: 小数保留的位数 /// - Returns: 保留后的小数 func roundTo(places: Int) -> Float { let divisor = pow(10.0, Float(places)) return (self * divisor).rounded() / divisor } }