Swift:數(shù)據(jù)類型轉(zhuǎn)換的 Extension

JKSwiftExtension刻帚,測試用例在 FoundationExtensionViewController.swift 對應(yīng)的控制器里面
目錄:
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 的基本轉(zhuǎn)換
extension Double {

    // MARK: 1.1挪蹭、轉(zhuǎn) Int
    /// 轉(zhuǎn) Int
    public var int: Int { return Int(self) }

    // MARK: 1.2、轉(zhuǎn) CGFloat
    /// 轉(zhuǎn) CGFloat
    public var cgFloat: CGFloat { return CGFloat(self) }

    // MARK: 1.3休偶、轉(zhuǎn) Int64
    /// 轉(zhuǎn) Int64
    public var int64: Int64 { return Int64(self) }

    // MARK: 1.4梁厉、轉(zhuǎn) Float
    /// 轉(zhuǎn) Float
    public var float: Float { return Float(self) }

    // MARK: 1.5、轉(zhuǎn) String
    /// 轉(zhuǎn) String
    public var string: String { return String(self) }

    // MARK: 1.6踏兜、轉(zhuǎn) NSNumber
    /// 轉(zhuǎn) NSNumber
    public var number: NSNumber { return NSNumber.init(value: self) }

    // MARK: 1.7词顾、轉(zhuǎn) Double
    /// 轉(zhuǎn) Double
    public var double: Double { return self }
}

二、Int+Extension

// MARK:- 一碱妆、Int 與其他類型的轉(zhuǎn)換
public extension Int {

    // MARK: 1.1肉盹、轉(zhuǎn) Double
    /// 轉(zhuǎn) Double
    var toDouble: Double { return Double(self) }

    // MARK: 1.2、轉(zhuǎn) Float
    /// 轉(zhuǎn) Float
    var toFloat: Float { return Float(self) }

    // MARK: 1.3疹尾、轉(zhuǎn) Int64
    /// 轉(zhuǎn) Int64
    var toInt64: Int64 { return Int64(self) }

    // MARK: 1.4上忍、轉(zhuǎn) CGFloat
    /// 轉(zhuǎn) CGFloat
    var toCGFloat: CGFloat { return CGFloat(self) }

    // MARK: 1.5、轉(zhuǎn) String
    /// 轉(zhuǎn) String
    var toString: String { return String(self) }

    // MARK: 1.6航棱、轉(zhuǎn) UInt
    /// 轉(zhuǎn) UInt
    var toUInt: UInt { return UInt(self) }

    // MARK: 1.7睡雇、轉(zhuǎn) range
    /// 轉(zhuǎn) range
    var range: CountableRange<Int> { return 0..<self }
}

// MARK:- 二、其他常用方法
public extension Int {

    // MARK: 2.1饮醇、取區(qū)間內(nèi)的隨機數(shù),如取  0..<10 之間的隨機數(shù)
    ///  取區(qū)間內(nèi)的隨機數(shù)秕豫,如取  0..<10 之間的隨機數(shù)
    /// - Parameter within: 0..<10
    /// - Returns: 返回區(qū)間內(nèi)的隨機數(shù)
    static func random(within: Range<Int>) -> Int {
        let delta = within.upperBound - within.lowerBound
        return within.lowerBound + Int(arc4random_uniform(UInt32(delta)))
    }

    // MARK: 2.2朴艰、轉(zhuǎn)換萬單位
    /// 轉(zhuǎn)換萬的單位
    /// - Parameter scale: 小數(shù)點后舍入值的位數(shù)观蓄,默認 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 與其他類型的轉(zhuǎn)換
public extension Int64 {

    // MARK: 1.1侮穿、轉(zhuǎn) Int
    /// 轉(zhuǎn) Int
    var toInt: Int {
        return Int(self)
    }
    // MARK: 1.2、轉(zhuǎn) CGFloat
    /// 轉(zhuǎn) CGFloat
    var toCGFloat: CGFloat {
        return CGFloat(self)
    }
    // MARK: 1.3毁嗦、轉(zhuǎn) Float
    /// 轉(zhuǎn) Float
    var toFloat: Float {
        return Float(self)
    }
    // MARK: 1.4亲茅、轉(zhuǎn) Double
    /// 轉(zhuǎn) Double
    var toDouble: Double {
        return Double(self)
    }
    // MARK: 1.5、轉(zhuǎn) String
    /// 轉(zhuǎn) String
    var toString: String {
        return String(self)
    }
    // MARK: 1.6狗准、轉(zhuǎn) NSNumber
    /// 轉(zhuǎn) NSNumber
    var toNumber: NSNumber {
        return NSNumber.init(value: self)
    }
    // MARK: 1.7克锣、轉(zhuǎn) Int64
    /// 轉(zhuǎn) Int64
    var toInt64: Int64 {
        return self
    }
}

四、CGFloat+Extension

// MARK:- 一腔长、CGFloat 的基本轉(zhuǎn)換
extension CGFloat {

    // MARK: 1.1袭祟、轉(zhuǎn) Int
    /// 轉(zhuǎn) Int
    public var int: Int { return Int(self) }

    // MARK: 1.2、轉(zhuǎn) CGFloat
    /// 轉(zhuǎn) CGFloat
    public var cgFloat: CGFloat { return self }

    // MARK: 1.3捞附、轉(zhuǎn) Int64
    /// 轉(zhuǎn) Int64
    public var int64: Int64 { return Int64(self) }

    // MARK: 1.4巾乳、轉(zhuǎn) Float
    /// 轉(zhuǎn) Float
    public var float: Float { return Float(self) }

    // MARK: 1.5、轉(zhuǎn) String
    /// 轉(zhuǎn) String
    public var string: String { return String(self.double) }

    // MARK: 1.6鸟召、轉(zhuǎn) NSNumber
    /// 轉(zhuǎn) NSNumber
    public var number: NSNumber { return NSNumber.init(value: self.double) }

    // MARK: 1.7胆绊、轉(zhuǎn) Double
    /// 轉(zhuǎn) Double
    public var double: Double { return Double(self) }
}

// MARK:- 二、角度和弧度相互轉(zhuǎn)換
extension CGFloat {

    // MARK: 角度轉(zhuǎn)弧度
    /// 角度轉(zhuǎn)弧度
    /// - Returns: 弧度
    public func degreesToRadians() -> CGFloat {
        return (.pi * self) / 180.0
    }

    // MARK: 弧度轉(zhuǎn)角度
    /// 角弧度轉(zhuǎn)角度
    /// - Returns: 角度
    public func radiansToDegrees() -> CGFloat {
        return (self * 180.0) / .pi
    }
}

五欧募、Character+Extension

// MARK:- 一辑舷、Character 與其他類型的轉(zhuǎn)換
public extension Character {

    // MARK: 1.1、Character 轉(zhuǎn) String
    /// Character 轉(zhuǎn) String
    var toString: String { return String(self) }

    // MARK: 1.2槽片、Character 轉(zhuǎn) Int
    /// Character 轉(zhuǎn) 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 值轉(zhuǎn) Int
   /// Bool 值轉(zhuǎn) Int
    var toInt: Int { return self ? 1 : 0 }
}

七剩盒、UInt+Extension

// MARK:- 一谷婆、UInt 與其他類型的轉(zhuǎn)換
extension UInt {
    // MARK: 1.1、轉(zhuǎn) Int
    /// 轉(zhuǎn) Int
    public var toInt: Int { return Int(self) }
}

八辽聊、Float+Extension

// MARK:- 一纪挎、Float 與其他類型的轉(zhuǎn)換
extension Float {

    // MARK: 1.1、轉(zhuǎn) Int
    /// 轉(zhuǎn) Int
    public var int: Int { return Int(self) }

    // MARK: 1.2跟匆、轉(zhuǎn) CGFloat
    /// 轉(zhuǎn) CGFloat
    public var cgFloat: CGFloat { return CGFloat(self) }

    // MARK: 1.3异袄、轉(zhuǎn) Int64
    /// 轉(zhuǎn) Int64
    public var int64: Int64 { return Int64(self) }

    // MARK: 1.4、轉(zhuǎn) Double
    /// 轉(zhuǎn) Double
    public var double: Double { return Double(self) }

    // MARK: 1.5玛臂、轉(zhuǎn) String
    /// 轉(zhuǎn) String
    public var string: String { return String(self) }

    // MARK: 1.6烤蜕、轉(zhuǎn) NSNumber
    /// 轉(zhuǎn) NSNumber
    public var number: NSNumber { return NSNumber.init(value: self) }

    // MARK: 1.7封孙、轉(zhuǎn) Float
    /// 轉(zhuǎn) Float
    public var float: Float { return self }
}

// MARK:- 二、其他常用的方法
public extension Float {

    // MARK: 2.1讽营、浮點數(shù)四舍五入
    /// 浮點數(shù)四舍五入,places
    /// - Parameter places: 小數(shù)保留的位數(shù)
    /// - Returns: 保留后的小數(shù)
    func roundTo(places: Int) -> Float {
        let divisor = pow(10.0, Float(places))
        return (self * divisor).rounded() / divisor
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虎忌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子橱鹏,更是在濱河造成了極大的恐慌膜蠢,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉兰,死亡現(xiàn)場離奇詭異挑围,居然都是意外死亡,警方通過查閱死者的電腦和手機贮勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門贪惹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寂嘉,你說我怎么就攤上這事奏瞬。” “怎么了泉孩?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵硼端,是天一觀的道長。 經(jīng)常有香客問我寓搬,道長珍昨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任句喷,我火速辦了婚禮镣典,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唾琼。我一直安慰自己兄春,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布锡溯。 她就那樣靜靜地躺著赶舆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭饭。 梳的紋絲不亂的頭發(fā)上芜茵,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音倡蝙,去河邊找鬼九串。 笑死,一個胖子當著我的面吹牛悠咱,可吹牛的內(nèi)容都是我干的蒸辆。 我是一名探鬼主播征炼,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼析既,長吁一口氣:“原來是場噩夢啊……” “哼躬贡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眼坏,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拂玻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宰译,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檐蚜,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年沿侈,在試婚紗的時候發(fā)現(xiàn)自己被綠了闯第。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡缀拭,死狀恐怖咳短,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛛淋,我是刑警寧澤咙好,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站褐荷,受9級特大地震影響勾效,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叛甫,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一层宫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧其监,春花似錦萌腿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睛约,卻和暖如春鼎俘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辩涝。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工贸伐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怔揩。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓捉邢,卻偏偏與公主長得像脯丝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伏伐,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348