Q2:关于数组的解包错误 fatal error: Can't unwrap Optional
来源:互联网 发布:软件后续技术支持方案 编辑:程序博客网 时间:2024/05/22 07:42
今天遇到一个小问题,想自己做个小项目,在一个controller中声明一个数组用于存储从数据库读来的内容,声明为 var bugCgs:[BugCategory],其实对应形式就是var className:[classType],很不巧,这样写会报错,如下图:
我自然知道在swift中变量都必须要有初始值(当然也不是一定的 例如在一个函数中就不需要)。xcode提示要不要加一个required initializer 'init(coder:)'? 由于对可选类型还是有一定理解,我不假思索改成 var className:[classType]!或者var className:[classType]? ok现在不报错了。但这无疑埋下了潜在危险,由于第一次运行时数据库没有内容,因此想插入一些测试数据进去,我是那么干的:
是的 没有报错,这也导致最后运行时错误。请看错误:
answer:
解决方法:声明数组时候应该申明为一个空数组var bugCgs:[BugCategory] = [BugCategory]()。错误原因也给出,因为当你声明一个可选类型数组时,是一个nil.看图:
可以看到隐式申明那是一个nil。那么对于一个nil的变量 你怎么调用append方法?至少我现在的理解是这样的。如果申明一个空数组(是一个实例,只不过里面只有0个元素),。至于单独onePeople虽然也是nil,但是下面我们采用一个实例化方法,这时onePeople不再是nil了,而是一个实例了。最后留一个问题,为什么用数组下标法也会报错,例如:
var peoples:[people]!//以下是错误做法!!peoples[0] = people()peoples[1] = people()
1 0
- Q2:关于数组的解包错误 fatal error: Can't unwrap Optional
- 关于Fatal error: Can't use function return value in write context报错的解决方法!
- 安装解压版本的MySQL,安装过程中的常见命令,检查windows系统错误日志的方式来检查MySQL启动错误,关于Fatal error: Can't open and lock privilege
- 安装mysql的1067错误的可能原因:Fatal error: Can't open privilege tables: Table mysql.user doesn't exist
- 关于Error: Can't compile duplicate declarations of entity "**" into library "work"的错误
- 关于Error: Can't compile duplicate declarations of entity "**" into library "work"的错误
- mysql 安装错误, Fatal error: Can't open and lock privilege tables
- 关于MYSQL Error:ERROR 1005 (HY000) at line 3: Can't create table '.\xx.frm'错误
- php empty()出错,Fatal error: Can’t use function return
- Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的解决方法
- Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的解决方法
- Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的解决方法
- 关于VC编译错误fatal error C1083的解决办法
- 关于Fatal NI connect error 12520的错误
- 关于VC编译错误fatal error C1083的解决办法
- 关于VC编译错误fatal error C1083的解决办法
- 关于VC编译错误fatal error C1083的解决办法
- 关于VC编译错误fatal error C1083的解决办法
- poj 3009 深搜
- 图像缩放--OpenCV cvResize函数--最近邻插值---双线性插值--基本原理
- 链表各种接口的递归写法
- 封装jQuery Validate扩展验证方法
- java基础---java中的IO流
- Q2:关于数组的解包错误 fatal error: Can't unwrap Optional
- 两道和Tarjan有关的图论题
- uva11542 Square(异或方程组)
- 第一部分 基础篇 第一章 走进MongoDB
- 需求结构化与分析约束影响
- 《gdb调试之实用技巧篇》
- day14_多线程
- 用递归来写各种接口
- 大型网站架构演变