打造完美调酒应用:DrinkMixer开发全流程解析
1. 应用背景与问题初现
调酒师Sam需要一款应用来简化调酒工作,DrinkMixer应运而生。这款应用有列表的表格视图和每款饮品的详细视图。应用开发初期进展顺利,但在填充每款饮品的详细信息时遇到了问题,原因是使用了字典的属性列表(plist)。
当应用运行到第20行的断点时停止,调试器显示调试控制台。通过设置断点发现,在应用执行导入文件的命令之前没有崩溃。接下来,我们逐步加载属性列表,通过两次输入“next”命令,第一次查找属性列表的路径,第二次实际加载数据。
然而,应用在加载属性列表后仍然崩溃,出现了将未知选择器(消息)发送到NSCFDictionary的异常,具体是“isEqualToString”。我们需要找出问题所在。
2. 调试与问题分析
2.1 使用调试器调查崩溃原因
我们可以让DrinkMixer可靠地崩溃,且问题似乎不在于属性列表的加载代码。Xcode在iPhoneOS关闭应用之前暂停了应用,我们可以使用调试器查看崩溃前应用正在尝试执行的操作。
切换回调试器,查看左上角的堆栈,这是导致崩溃的调用堆栈。前5帧是框架代码,第6帧是我们编写的代码,这里就是问题所在的代码行。
2.2 问题根源:字典与字符串不匹配
异常提到了NSCFDictionary,这些字典来自属性列表。当我们加载属性列表时,得到的是一个字典数组,而不是之前的字符串数组。
在尝试设置单元格的标签文本时,标签将字典当作字符串发送消息,这就导致了未识别的选择器异常。因为标签期望的是字符串,而我们却给它
超级会员免费看
订阅专栏 解锁全文
977

被折叠的 条评论
为什么被折叠?



