我打算花较长的时间来开发一个叫iWriter的软体,是用写小说的。有兴趣,一起吧。

前段时间我用Electron+Node.js做了个半成品,不知咋的我又决定重新来过。计划先用Swift开发个macOS版本,然后反馈好的话,继续用C#开发个Windows版本。你要问「Why?「 我能怎么办,都说了不知咋的,大概或许可能是我有更大的想法吧。我打算在不久的将来能开发一个稍大点的程序,到那时Electron可能不够用。写程序嘛大家都知道,但是,为什么我要浪费这春花秋月夏风冬雪去做这么无聊的事呢。嗯,有点不好意思,所以声音小一点,「因为我穷,还发抖。」 当我看到唐家三少他们富也发抖时,我就决定从他那扣点什么。想了三天三夜,决定开发一个写小说的程序「iWriter」,记得别用我取的名字哟。他们那么有钱,我的程序那么好,所以百吧几十块钱的,他们肯定舍得施舍。哈哈哈,想到这,心情好多了,看来我也能赶上党的号召,走向小康生活。

你说:「道理我都懂,但为什么你要开发的是MacOS版本呢?」 这样问下来,有点尴尬。这不,我现在是游荡进行时,手头只有MacBook Pro。如果是在家里,我肯定是用C#+Windows,因为这个我熟。

你又说:「道理我都懂,但为什么你要选择用Swift来开发呢?「 就你话多,又有点尴尬。我知道Objective-C我熟,毕竟用它开发过几个小程序。但为什么还是选择Swift呢,因为不知咋的,知乎前几天给我推了个SwiftUI的文章,我觉得有前途。只是这个项目用不上,但还是就这样定了。

我们要一起学什么呢?

你可要看得清清楚楚,我可没骗你。

  1. 我也不会,所以要一起学,但是我是用业余时间做这个,进程有点慢,你要当心。
  2. 是学习Swift语言。不是Objective-C,Objective-C我会,Swift我不会的。
  3. 是开发macOS软体,苹果电脑上用的那个。不是iOS,手机用的那个,别看错了。

我们应该怎么学呢?

因为是我在写,所以只能用我的方法了,当然欢迎你用你的方法来写。

从很久很久以前开始,我学编程、学设计都是从自己的项目开始。就好比现在,有了项目以后,你还要弄清楚这三个问题:首先,要明白自己在做什么?其次,会涉及到哪些软体?最后,有哪些技术点?那好,我来说说这一次我们所要学的东西和我们所要做的事情:

首先,要明白自己在做什么?iWriter,一个用来写小说的软体,它有以下主要功能:

  1. 目录编辑:导图式目录编辑、目录树编辑、正文使用#*&@等符号实现标题、段落、备注、插入角色等编辑。
  2. 角色编辑:姓名生成器、属性设置,按角色查看时间线
  3. 场所编辑:场所名称生成器、属性设置,按场所查看时间线
  4. 正文编辑:查找替换、备注、字典、语法检查、角色全文替换、场所全文替换、角色名称全文更新,场所名称全文更新、统计工具、计时工具。
  5. 软体风格:界面颜色、文字颜色、字体大小、界面调整与保存
  6. 文件功能:导入、导出、上传到小说平台、分享到社交平台。

其次,会涉及到哪些软体?桌面macOS、编辑器Xcode、开发语言Swift、支持语言SQL等:

  1. 需要了解macOS系统。这个我会,跟Windows差不多,所以这个不讲。
  2. 需要了解Xcode。这个我也会,有点小得意,哈哈,只是简单介绍一下。
  3. 需要了解Swift。这个我不会,听说是一个不错的语言,学到应该是挣到。这个教材多,官网上的非常好:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html。我也会出一份简明教材。一起学吧。
  4. 需要了解Sqlite。我是会SQL,Sqlite比SQL学起来应该简单多了,在这里是用来保存汉字的字典数据,所用到的语句类型不多。也可能会用Realm,到时候再看。
  5. 需要了解Photoshop,Illustrator。这个我会,用来做ICON或软体的开启图片,我出图就可以了,不教。也许会用SVG的图,嗯,这个也不教了。
  6. 需要了解Mac下的原型工具。这个我会好几个,历害吧?用来做iWriter的原形图,我出图就可以了,所以还是不教。
  7. 需要了解Go或Python。这个我又会,用来爬网上的字典,已经爬好,不教了。只想说一句:用Go做爬虫,使用多线程超级爽。

最后,有哪些技术点?下面是根据我以前开发iOS的经验想到的,其实我开发iOS时是根据我开发站点的经验去想的, 那次结果是对的。哈哈,这次就不知道了:

  1. 文件保存格式的设计:可以参考电子书EPUB的格式:zh.wikipedia.org/wiki/E,或PDF格式:zh.wikipedia.org/wiki/%。我打算使用的是:多个关联文件通过tar打包,并改后缀为.im的格式。后面再讲。
  2. Swift基本了解后,著重熟悉的有:闭包、泛型、包的管理、类的继承拓展、委托、字元串处理、数组处理、字典处理、文件读取等。库的话:2D图库用得上。
  3. macOS组件,组件布局、动画、事件、数据绑定、数据共享与同步、布局跳转。这些问题可查Xcode帮助,一般来说都可以解决。
  4. 文字处理:选择、替换、样式。以我JS处理段落文字的经验,这里应该比较复杂,复杂处在跨段落、跨章节处理嵌套样式。
  5. 配置文件、界面、中英文处理等。中英文处理系统应该是支持的,就算不支持自己处理起来也不算复杂。
  6. 最后是打包、发布、注册。

我的笔记类文章是什么样的格式呢?

在我写学习笔记类文章时,特意以一种固定的格式去写,这格式我称之为「三段式」。像似每一本书的摘要一样的,我把文章的重点放在前面。目的是让看文章的人决定是否需要了解更多的内容,如果不,这样就为他节约了 80%以上的时间。特别是自己复看时,基本上都不用全部看完。

  1. 标题。看了标题,有需要,继续看。
  2. 提要。看了提要,有需要,继续看。
  3. 重点。看了重点,了解,过;不明白,继续看。(或许不存)
  4. 细节。看了具体内容,了解,过;不明白,回信:你丫写的是什么东东呀。

下一篇,Swift 的基础。

让我们在这里,遇见明天的自己!姜友华


推荐阅读:
相关文章