swift报错,数组字典等,一定要初始化

5B53BFD8-3AF4-43A8-89DD-2ECDB9C740DF.png

因为在Swift中,在声明常量、变量时就需要赋初始值,所以这样声明var _dataSource :NSMutableArray = []后_dataSource已经声明为一个空数组,后面对它的使用中自然不会报错。

但是如果你这样声明var _dataSource :NSMutableArray! = nil
我们先不管这个!,首先你声明这个变量时给他赋值为nil,那么在后面使用_dataSource.addObject(people_1)时都没有初始化这个数组,报错是一定的。
我们再来看这个!,加了!后,这边变量就是一个可选类型,表示这个变量一定会有值,那么你又赋值为nil,所以这么声明没有问题,但是使用的时候问题就来了。
我们来看看错误提示unexpectedly found nil while unwrapping an Optional value,意思就是说当在给可选类型解包后发现他的值是nil,那么仍然属于没有实例化就去使用他,所以是错误的。

再来看看var _dataSource: NSMutableArray?这种方式。
?的作用也是将该变量定义为可选类型,但与!不同的是,他不确定有没有值,也就是说有可能是nil,也有可能有值。并且使用?声明变量时实际上是默认给变量先赋值为nil,在后面的代码中等待你去初始化。但是你又没有对它进行初始化,就直接使用了,那自然也会报错啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容