Swift开发中的一些琐碎的知识点-2

1. debug模式下打印release模式下不打印.

#if DEBUG
print("debugq情况下才打印")
 #endif

2.断言

强制程序员调用某个方法的时候,传入合适的参数. 否则在debug模式下是会奔溃的.

func convertToKelvin(_ celsius: Double) -> Double {
        assert(celsius > 273.15,"输入的摄氏温度不能低于绝对零度")// debug 模式下 ()条件不成立就崩溃.提醒程序员,输入参数必须满足条件
        return 100.0
    }
    /*2019-08-20 14:09:06.256974+0800 TestSwift2[17029:433405] Assertion failed: 输入的摄氏温度不能低于绝对零度: file /Users/gti/Desktop/TestSwift2/TestSwift2/ViewController.swift, line 31*/

3.随机数终极版本

随机数是编程中大概率需要用到的. arc4random 是一个非常优秀的随机数算法,并且在Swift 中也可以使用. 它会返回给我们一个任意整数.  but 有时候在iPhone 5或者以下的设备中,程序会崩溃. (好在iPhone 5这样的设备已经逐渐被淘汰了) 崩溃的啥原因是32位,64的缘故. int在32 位的硬件里就是int32. 同理int64. 优化代码如下:

func make15() {
        for _ in 0...100 {
            let range = Range<Int>(1...6)
            print(random(in: range))
        }
    }
    
    func random(in range: Range<Int>) -> Int {
        let count = UInt32(range.endIndex - range.startIndex)
        return Int(arc4random_uniform(count)) + range.startIndex
    }

4. 遍历数组,同时得到index和value.-----enumerated

for(idx, value) in [1,2,3,4,5].enumerated() {
            print("idx:\(idx)---value:\(value)")
        }

5.打印格式的扩展

extension Double {
    func format(_ f: String) -> String {
        return String(format: "%\(f)f", self)
    }
}

let b = 1.22323
//let format = String(format: "%0.2f", b)  //1.22      
print(b.format("0.3"))// 1.223

6. 隔离代码,使代码层次清晰

// 方法1
        do {
            print("隔离代码啊")
        }
        
        
        //方法2
        let nameLabel: UILabel = {
            let label = UILabel(frame: CGRect(x: 150, y: 30, width: 200, height: 40))
            label.textColor = .blue
            label.text = "隔离代码啊"
            return label
        }()
        view.addSubview(nameLabel)

7.分区

// MARK: 这里讲的是where
// FIXME: 需要修改的地方

效果:

8. where forEach

let name = ["王小二","张三","李四","王二小"]
        name.forEach {
            switch $0 {
            case let x where x.hasPrefix("王"):
                print("\(x)是笔者本家")
            default:
                print("你好\($0)")
            }
        }
/*打印
王小二是笔者本家
你好张三
你好李四
王二小是笔者本家
*/

9. for in 的用法

for index in 0...3 {
            print(index)
        }
        
        let test = "helLo"
        let interval = "a"..."z"
        for c in test {
            if !interval.contains(String(c)) {
                print("\(c) 不是小写字母")
            }
        }
/*打印
0
1
2
3
L 不是小写字母
*/

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值