Q2:关于数组的解包错误 fatal error: Can't unwrap Optional

今天遇到一个小问题,想自己做个小项目,在一个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()

Q2:关于数组的解包错误 fatal error: Can't unwrap Optional

时间: 2024-09-27 16:55:46

Q2:关于数组的解包错误 fatal error: Can't unwrap Optional的相关文章

mysql-python 安装错误 fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

安装mysql-python之前, 请先安装setuptools. https://pypi.python.org/pypi/setuptools/7.0 下载mysql-python. 下载源码包. https://pypi.python.org/pypi/MySQL-python/1.2.5 解压后执行 python setup.py install 提示错误: fatal error C1083: Cannot open include file: 'config-win.h': No s

编译依赖于React Native0.46.4的React Native IOS工程时,出现错误“fatal error: 'React/RCTEventEmitter.h' file not found”

我的环境: WebStorm 2017.2Build #WS-172.3317.70, built on July 14, 2017 JRE: 1.8.0_152-release-915-b5 x86_64JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Mac OS X 10.12.6 Xcode8.3.3(8E3004b) 网上搜索,可以解决我的问题的网址:https://stackoverflow.com/questions/41663002

VS2012与VS2015同时安装用VS2012创建MFC程序时弹出编译错误”fatal error C1083: 无法打开包括文件:“mprapidef.h”: No such file or directory”的解决办法

在WIndows 7操作系统上同时安装VS2012与VS2015并用VS2012创建MFC程序时弹出编译错误"fatal error C1083: 无法打开包括文件:"mprapidef.h": No such file or directory"的解决办法: I installed vs2015 and vs2012, then the same problem occurs,however, I find a solution. open visual stud

vs2008编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决

重装了本本上的Xp系统,如往常一样,升级,装杀毒软件,开发工具.一些进行的非常顺利.然而,在我打开VS2008准备耕作的时候,尽然出现了一邪恶的错误提示:vs2008编译错误fatal error C1902: 程序数据库管理器不匹配:请检查安装解决.进过多家的方法,均无效,重装VS也不行,最后终于百度到一无名大侠的解决方案,问题解决了,在这里记录下来,以备再有不测. 到C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE下面拷贝msp

编译Busybox时,出现错误fatal error: curses.h: No such file or directory

1 scripts/kconfig/mconf.c: In function ‘exec_conf’: 2 scripts/kconfig/mconf.c:481:2: warning: ignoring return value of ‘pipe’, declared with attribute warn_unused_result [-Wunused-result] 3 pipe(pipefd); 4 ^ 5 SHIPPED scripts/kconfig/zconf.tab.c 6 SH

解决错误 fatal error C1010: unexpected end of file while looking for precompiled head

在编译VS时候,出现fatal error C1010: unexpected end of file while looking for precompiled head. 问题详解:致命错误C1010,在寻找预编译指示头文件时,文件未预期结束.就是没有找到预编译指示信息的问文件. 顾名思义就是预编译由于缺少了预编译文件而失败.解决方法显然能够取消预编译,或者帮助编译器找到预编译文件. 故解法: 1.右键单击项目project中的cpp文件,在菜单Project->Settings->C/C

grunt错误——Fatal error: Unable to find Gruntfile

E:\website\jquery-plugins>grunt A valid Gruntfile could not be found. Please see the getting started guide for more information on how to configure grunt: http://gruntjs.com/getting-started Fatal error: Unable to find Gruntfile. 错误提示Gruntfile.js文件找不到

【Visual Studio】解决错误 fatal error C1010: unexpected end of file while looking for precompiled head(转)

原文转自 http://blog.csdn.net/liuqiyao_01/article/details/38867145 在编译VS时候,出现fatal error C1010: unexpected end of file while looking for precompiled head. 问题详细解释:致命错误C1010,在寻找预编译指示头文件时,文件未预期结束.就是没有找到预编译指示信息的问文件. 顾名思义就是预编译因为缺少了预编译文件而失败.解决方法显然可以取消预编译,或者帮助编

gcc 错误:Fatal error error writing to tmp No space left on device

在使用gcc make时报错:Fatal error error writing to tmp No space left on device finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtSchemes.C:40: fatal error: error writing to /tmp/ccUN0zCh.s: No space left on device LaunderGibsonRSTM/LaunderGibsonRSTM.C:348: fat