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 { return 0..) -> 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
}
}