14、打造完美调酒应用:DrinkMixer开发全流程解析

打造完美调酒应用:DrinkMixer开发全流程解析

1. 应用背景与问题初现

调酒师Sam需要一款应用来简化调酒工作,DrinkMixer应运而生。这款应用有列表的表格视图和每款饮品的详细视图。应用开发初期进展顺利,但在填充每款饮品的详细信息时遇到了问题,原因是使用了字典的属性列表(plist)。

当应用运行到第20行的断点时停止,调试器显示调试控制台。通过设置断点发现,在应用执行导入文件的命令之前没有崩溃。接下来,我们逐步加载属性列表,通过两次输入“next”命令,第一次查找属性列表的路径,第二次实际加载数据。

然而,应用在加载属性列表后仍然崩溃,出现了将未知选择器(消息)发送到NSCFDictionary的异常,具体是“isEqualToString”。我们需要找出问题所在。

2. 调试与问题分析

2.1 使用调试器调查崩溃原因

我们可以让DrinkMixer可靠地崩溃,且问题似乎不在于属性列表的加载代码。Xcode在iPhoneOS关闭应用之前暂停了应用,我们可以使用调试器查看崩溃前应用正在尝试执行的操作。

切换回调试器,查看左上角的堆栈,这是导致崩溃的调用堆栈。前5帧是框架代码,第6帧是我们编写的代码,这里就是问题所在的代码行。

2.2 问题根源:字典与字符串不匹配

异常提到了NSCFDictionary,这些字典来自属性列表。当我们加载属性列表时,得到的是一个字典数组,而不是之前的字符串数组。

在尝试设置单元格的标签文本时,标签将字典当作字符串发送消息,这就导致了未识别的选择器异常。因为标签期望的是字符串,而我们却给它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值