---
title: "Hipo 2.0 Swift重写，限时免费！限时免费！限时免费！"
description: "2015年10月16日[Hipo 2.0.0](http://hipo.cash)正式上线App Store，似乎倏忽间就将这大半年的躁郁一扫而光。上线全新版本，~~**限时免费**，**限时免费**，**限时免费**~~（已经结束限免）^_^"
url: "https://hicc.pro/p/hipo-money/hipo-2"
author: "tyler wang"
published: "2015-10-16T12:24:40.000Z"
updated: "2021-02-21T14:26:53.000Z"
category: "Hipo Money"
tags:
  - "Hipo"
  - "iOS 开发"
  - "Swift"
  - "记账"
lang: "zh-CN"
site: "Hipo日志"
---

# Hipo 2.0 Swift重写，限时免费！限时免费！限时免费！

![Hipo 2.0.0 ](https://image.hicc.pro/image/c/c8/dcf4a9a6b2a524027f360c48964df.jpg)

2015年10月16日[Hipo 2.0.0](http://hipo.cash)正式上线App Store，似乎倏忽间就将这大半年的躁郁一扫而光。上线全新版本，~~**限时免费**，**限时免费**，**限时免费**~~（已经结束限免）^_^

<a href="https://itunes.apple.com/cn/app/hipo-zhuan-zhu-zhi-chu-yu/id910176383?mt=8" alt="An accounting APP which focus on budget balance." ><img src="http://app.hicc.me/img/btn.png" _style="width:160px;"/></a>

####Hipo 1.X

[Hipo 1.X](/hipo/)使用当时移动Js框架新秀ionic开发，虽说是phoneGap应用，但是做出来发现体验到也不差，使用Js开发移动应用，快速，成本低，门槛低，Hipo上线初就获得了App Store首页优秀App的推荐，这也直接决定了我走上了独立开发这条不归路-_-#

至今仍然喜欢AngularJs，ionic，**仍然相信在App初期多数情况下使用Js开发是个很好的选择。**

####iOS原生开发学习

在变成果粉的同时，Apple推出了Swift语言，能够看得懂的语法，满足了我尝鲜的欲望，加之当时考虑实现Hipo数据云端保存，跨设备同步的功能，索性决定使用swift重写Hipo，于是：

- 看国内翻译的swift语法文档
- 继续看其他版本的swift语法资料
- ……如此重复纠结……
- 看完swift语法，发现对iOS开发还是一无所知，买了[bitfountain](https://fedora.bitfountain.io/)出的iOS 8，swift视频教程，教程属于入门教程，然后用iPad看视频，电脑开着Xcode，Google联系，倒也跟得上，iOS原生开发逐渐入门。
- 看完bitfountain视频，发现对着空屏幕还是无从下手，又发现iTunes出了斯坦福白胡子老头iOS swift教程，又开始进入左边iPad，右边电脑模式……
- 一边看斯坦福教程，一边也用swift重写Hipo，至此算是具备了写iOS原生App的基础元知识。
- YouTube上有不少高质量视频教程。
- Apple iOS API官方文档是个好东西，先看别入门教程，代码阶段常开iOS API官方文档。
- Xcode playground是个好东西，可以快速练习Swift，新手用它来验证下代码最好不过了。

学习期间，看了不少教程，回过头来发现美剧刷的更多-_-#

####Hipo 2.0 UI重新设计

Hipo 1.X的问题是
- 将预算/统计以及其他入口放倒了右侧的滑动菜单中，"Out of Sight, Out of Mind"，有限的几次使用中，根本不会用到这些地方，
- 首页也似乎有点单调，
- 对于历史数据的查看路径过长，
- 最后iOS自带键盘输入金额太过麻烦。

因此Hipo 2.0.0：

- 首页集合每月花销，预算/花费，新建类入口都在首页；
- 数据按照月为单位，一月一屏，历史展示年的列表一页足以，相互很方便的切换。
- 全新设计的记账表单页面，自定义数字键盘。

学习iOS开发过程中也会用纸币简单画画2.0的原型，也参考了学习了Google Design，具体UI，使用sKetch，配合sKetch Mirror，几番修改，快速搞定。

动效部分，因为进度问题只是脑子中过了下。

####Hipo 2.0核心功能实现

Hipo数据方面，本地CoreData存储，使用增量同步策略。

- 本地选择CoreData纯粹是因为不太喜欢sql的方式，而且想靠近点Apple官方推荐方式，以便后期能够不太费力的使用Apple提供的新东西。至于具体CoreData操作还是借助了MagicalRecord，在此推荐。
- Hipo 1.x中数据存储在Sqlite中，为了迁移到CoreData，之前选了个Swift的Sql库，但是Swift升级到2之后，发现几个有名的Swift Sql库都没能第一时间升级到Swift 2，最后只得使用了OC语言的FMDB。
- Swift 语法从1到2，本以为会很头疼，结果Xcode自动转换，一次成功！
- 在数据网络存储，多设备同步的实现方案的选择中纠结了很久，初期的考虑使用类似LeanCloud的方式，但是后来发现似乎LeanCloud方案无法仅依靠客户端实现增量同步(可能是我没想到如何做)，需要依赖云端代码，所需的技术栈略长。
- 在开始代码不久，才惊喜发现**Apple Cloudkit能够仅靠客户端实现增量同步**，免费额度很高，用户无需登录注册，相对而言开发者更加不用关心数据安全等，决定转而使用Cloudkit实现Hipo增量同步，**之后的Demo测试发现CloudKit似乎比外界认为的要好**，在此占个坑，后续打算写写CloudKit的文章，安利安利CloudKit。
- Hipo将用户数据存储到了用户自己iCloud账户下的私有数据库，用户将数据完全隔离，即使我也没办法看到用户记账数据。
- 之前准备将同步做为2.0.0内购，后来听取建议，**同步完全免费！同步完全免费！同步完全免费！**

####Hipo 2.0 UI布局测试

- 因为有HTML，CSS相关基础，Hipo使用Storyboard布局，个别地方代码布局，虽说繁琐倒也轻车熟路。
- UI只是参考一点Google Design，虽说挺喜欢它的东校，但是在iOS实现相对复杂只能作罢。
- 因为进度问题，iPad布局基本还是按照iPhone思路，后续可以考虑优化iPad布局。
- Hipo中引入了腾讯Bugly，Bug跟踪平台，自动上传符号表比较省事。希望能够尽可能减少Hipo bug。
- 测试使用Apple TestFlight，每次上传到iTunes Connect想死。
- 最后提交审核居然遇到Apple iTunes Connect bug，大半夜改半天plist配置才提交成功。
- 周日提交周五审核通过～～

最后在此感谢LifeHacker群内各位大拿以及公司iOS大神的帮助🙏

####Hipo 2.X TODO

- 同步是个相对复杂的东西，得继续大力优化同步。
- 可能会有**Apple Watch版本** ？
- 可能会有**iOS Widget** ？
- 可能会有Web版([hipo.cash](http://hipo.cash)域名都准备好了^_^)。
- 很大可能会有家庭账本。

####……

个人开发就像独行沙漠，间或的几点绿洲便足以让我继续前行。

<a href="https://itunes.apple.com/cn/app/hipo-zhuan-zhu-zhi-chu-yu/id910176383?mt=8" alt="An accounting APP which focus on budget balance." ><img src="http://app.hicc.me/img/btn.png" _style="width:160px;"/></a>

![Hipo AppStore qrcode](https://image.hicc.pro/hicc_me531079820_1445338395Hipo.png)

---

原文 / Source: <https://hicc.pro/p/hipo-money/hipo-2>
