其实也没什么好准备的了,我没有搞一堆资料、书籍、视频什么的去先学习,我觉得那样做对我来说就是个噩梦,我的准备无非就是几个选择:
OC or Swift?
在多个论坛里逛了一圈之后,我打算从swift开始,因为OC对我来说太怪异了,我受不了它那个语法,哈哈,反正大伙不都说swift要替代OC嘛,我也不是说要靠这个东西去找饭碗,就是觉得swift的语法更能接受一些,没别的。
iOS or Mac?
这个选择其实是在动心写Mac之前就有了的,很搞笑。iOS很火,哪怕是在我们这种三线城市,iOS开发人员工资也不错。但是想了又想,还是想着去做个Mac应用吧,主要是我不太喜欢跟风,大家一窝蜂地去做iOS应用,我就不太想了,反正是好玩,那就试试Mac应用吧
ODBC or libpg
PostgreSQL官网上提供了很多优秀的第三方驱动,适合C系而且开源免费还是官方正统的的主要是 PostgreSQL Global Development Group 提供的 psqlODBC,因为我这人比较迷信官方的东西,所以打算用这个,后来考虑再三还是放弃了。我最后选择了直接用官方提供的C库libpg,虽然用ODBC以后扩展到其他数据库可能方便些,但是我觉得反正是自己用,去学习官方的lib更能了解数据库的一些细节,于是就参考libpq - C Library一点一点开干了。
做好这个心理准备后,就开始构思怎么搞了。首先是取个名字——取名真难,比跟我儿子取名还难。一开始叫iData Studio,因为我看其他数据库客户端动不动就是这个studio那个studio的,过了几天,觉得不爽,就换了个名字叫eNull。把工程都删了,重新建一个,然后就学会了在界面上连线,感觉好神奇哦,XCode下编程还可以这样玩。
过了几天,发现我不应该勾选那个故事板,而且我觉得名字又(想换了,于是我把工程删了,重建了一个,叫vNULL,然后再也没有改过了,这个时候,我也就能编译一个啥也没有的空白窗口,仅此而已,呵呵
然后我做出了我人生中第一个Mac app ——照着 Start Developing Mac Apps Today捣鼓出来的,完成这个demo后,我才开始考虑一直担心的问题:
研读了几篇不错的博客,其中一个Swift and C Interop。非常不好意思的是,看完了还是不知道怎么搞,小白嘛,只知道大概意思就是要搞个桥,让xcode把那些c函数都给翻译一遍,swift里就可以用了。怎么添加bridging-header文件俺就不说了,太小儿科了。不过当初,我也是看了一整天的博客才“偶然”搞成功——貌似编译器设置里还要捣鼓一下,其实就是俺没有设置好include路径还有对libpq.a的引用路径,哈哈,好丢人!
看看俺的工程结构,是不是像模像样了,白白胖胖的vNULL-Bridging-header.h静静地躺那,看起来就心里舒坦。唉,图片上不了。。。
2个星期后,我终于习惯了变量名在前、类型在后的这种定义方式,也接受了某些时候还TMD可以不用指定类型让编译器自己去揣摩——算是彻底摆脱了谭浩强老师的毒害了。那个时候,我基本上参照MSDN中的SqlConnection对象写了个自己的SqlConnection,也就是对官方API进行了一些简单的封装——因为我也搞不清要提供一些什么方法什么属性给我的SqlConnection,依葫芦画瓢是最快的。并且在一个风高夜黑的晚上,我成功连上了公司的数据库服务器,对话框中跳出了一个“Connection OK!”字符串,那种喜悦,就跟人类第一次踏上月球一样啊,哈哈!
至此,我基本按照每天解决一个问题的节奏——其实大多时候都不止,接下来就是整界面了,要学习appkit里的那些视图、控件等,又是一场噩梦的开始。