最近想检验一下自己学习iOS3个月以来知识的掌握情况,所以决定自己动手编写一个简单的计算器app。考查了市面上的大多数计算器应用,发现都不能满足“回顾之前的计算结果”的功能,而我觉得这个功能还挺有需求的,因此决定自己加入这个功能!
废话不多说啦,经过努力,终于把自己的第一个完整的app写出来啦!以下是截图:
计算器确实是一个很简单的app,界面一共就3个,一个计算器视图,一个历史记录视图以及一个用来切换的navigation bar。其中,计算器视图就是用一个简单的view controller实现;历史记录视图是由table view controller实现,将其data source和delegate设为计算器视图控制器;再将它们用一个navigation controller进行管理,切换即可。
计算器视图控制器里添加了面板上的所有按钮,用来读取用户输入,以及显示面板,用来显示用户输入和运算结果。将用户的输入和运算结果保存到自己的实例变量中,然后一方面在显示面板中显示,另一方面作为历史记录视图的数据显示在table view中。
界面比较简单,但逻辑实现还是比较复杂的。要考虑用户按不同顺序按下按钮,计算器的行为应当是不一样的,比如什么时候输入的是第一个数,什么时候输入的是第二个数,当一次计算完成后按运算符号应当直接进行连续计算,等等。因此,我设置了两个提示状态的属性:shoudRefresh,inputFirstNumber,用来标记目前计算器所处的状态。整体的app的基本逻辑如下图:
除了逻辑之外,另一个遇到的难题是确定结果的保留位数。因为系统的数据类型float是不精确的,因此会出现例如5.2+1.8=7.0000001这种情况。最后的解决办法是,记录用户输入的两个数的小数位数,取其大者作为最终的结果精度。然后对结果用decimalNumber的四舍五入函数进行保留。
虽然是一个很小的app,但作为第一个完整的工作还是很有收获的。多动脑,多写代码,多查阅文档,多积累知识,才能得心应手。
移步至github下载:https://github.com/YangGao1991/calculator-with-history-record.git