Swift:数据类型转换的 Extension

简介: Swift:数据类型转换的 Extension

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


目录
相关文章
|
6月前
|
存储 安全 编译器
在Swift编程语言中,数据类型
在Swift编程语言中,数据类型
58 1
|
6月前
|
存储 Swift
Swift 数据类型
Swift 数据类型
78 2
|
16天前
|
存储 安全 Swift
Swift 数据类型
10月更文挑战第24天
16 0
|
6月前
|
前端开发 Java 编译器
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
46 0
|
6月前
|
存储 安全 Swift
【Swift开发专栏】Swift的数据类型全攻略
【4月更文挑战第30天】本文介绍了Swift编程语言中的基本和复合数据类型。基本数据类型包括整数(如Int、UInt)、浮点数(Float、Double)、布尔值(Bool)和字符串(String),它们是构建程序的基础。Swift的整数类型有多种大小和符号,浮点数提供不同精度,布尔值表示逻辑状态,字符串支持丰富操作。复合数据类型如数组(Array)和字典(Dictionary)允许存储多个同类型元素或键值对。通过示例代码展示了如何声明和使用这些数据类型。
109 0
|
存储 前端开发 Swift
Swift实用小册19:Extension扩展的使用
在本章中,你将学会Extension扩展的使用方法。
399 0
Swift实用小册19:Extension扩展的使用
|
前端开发 Swift 数据安全/隐私保护
Swift实用小册01:参数声明、数据类型、命名方式、代码注释
Swift实用小册01:参数声明、数据类型、命名方式、代码注释
238 1
【Swift4】(1) 初步认识 | 数据类型
【Swift4】(1) 初步认识 | 数据类型
|
测试技术 Swift
Swift:FileManager+Extension
Swift:FileManager+Extension
591 0
|
测试技术 Swift
Swift:CALayer+Extension
Swift:CALayer+Extension
155 0