美文网首页
Swift 数组字典安全操作防越界崩溃扩展类目

Swift 数组字典安全操作防越界崩溃扩展类目

作者: sunnytu123 | 来源:发表于2019-06-27 16:21 被阅读0次

swift开发中会遇到一些optional字段,
处理的时候需要大量的判断,
有时候疏忽就会发生崩溃。
比如数组越界,或者插入了nil的对象,
怎么才能像oc一样灵活的处理optional value?


Swift Array 的安全操作

给数组添加扩展
下面代码可以省去optional的判断

extension Array {
    mutating func add(_ safeObject : Iterator.Element?) {
        if let o = safeObject {
            self.append(o)
        }else{
            print("Warning! Array:\(self) add an nil element")
        }
    }
}

添加下标延展
防止数组越界

    subscript (safe index: Index) -> Iterator.Element? {
        return indices.contains(index) ? self[index] : nil
    }

或者写一个OC风格的方法
返回一个optional value

  func objectAt(_ index : Int) -> Iterator.Element? {
        if index < self.count {
            return self[index]
        }else {
            print("Warning! Array:\(self) object index:'\(index)' out of bunds (0 , \(self.count))")
            return nil
        }
    }

Swift Dictionary 的安全操作

下面是字典的安全插入

    mutating func set(_ key : Dictionary.Key , _ value : Dictionary.Value?) {
        if let o = value {
            self[key] =  o
        } else {
            print("Warning! Dictionary:\(self) append an nil value key is '\(key)'")
        }
    }

还有一些其他类型转换的方法

不同类型的值直接转换

       let list2 = [123,232,231,213]
        //number数组转String
       let _ = list2.stringAt(0)

     var dict = ["name" : "adw" , "age" : "12" ]
        //不同类型互相转换
        let _ = dict.string("name")
        //log: Warning! Dictionary:["name": "adw", "age": "12"] int for key:'name' value:'adw' is not cover to Int!
        let _ = dict.int("name")

还有一些其它扩展
详细的请看demo
喜欢的点个Star

demo地址:
传送门
https://github.com/xujiyao123/SwitCollectionsSafeAccess

相关文章

  • Swift 数组字典安全操作防越界崩溃扩展类目

    swift开发中会遇到一些optional字段,处理的时候需要大量的判断,有时候疏忽就会发生崩溃。比如数组越界,或...

  • 关于iOS崩溃的认知和一些避免

    APP常见崩溃: Container crash(数组越界,插nil等) 字典的构造与修改 操作 UITableV...

  • 学习OC

    1.数组越界,字典取空问题解决 实现一个数组或者字典的扩展方法,判断数组或者字典是否为空或者越界,如果是返回对象,...

  • iOS常见的崩溃

    数组越界 字面量数组和字典插入nil值 字典 Unrecognized Selector NaN崩溃 富文本初始化...

  • 防止崩溃

    非字典转模型 数组越界 子线程刷UI 崩溃日志打印

  • 窥探Swift之数组安全索引与数组切片

    本文摘自窥探Swift之数组安全索引与数组切片 前言:通常我们对数组进行索引操作会考虑是否越界,通常的处理方法是对...

  • iOS 项目中swizzling应用

    1). swizzling源类 2). 崩溃保护类(数组越界,字典赋值崩溃保护) 3).导航栏返回按钮图片设置,...

  • 03Runtime

    应用场景:1.处理数组越界, 防崩溃库method_exchangeImplementationsclass_ge...

  • iOS Crash三部曲~之二常见Crash

    1 越界 1.1 数组越界 第1类崩溃就是越界问题,最常见的就是数组越界。 崩溃信息: 分析: 可以看出当前数组的...

  • IOS基础知识-异常崩溃处理篇

    常见的崩溃类型 1.数组越界,nil值初始化导致的崩溃。2.对字典插入nil值,或者读取NSNULL导致的崩溃。3...

网友评论

      本文标题:Swift 数组字典安全操作防越界崩溃扩展类目

      本文链接:https://www.haomeiwen.com/subject/jrvrcctx.html