使用Realm和Swift编写一个ToDo应用

前端之家收集整理的这篇文章主要介绍了使用Realm和Swift编写一个ToDo应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用Realm和Swift编写一个ToDo应用

作者:HOSSAM GHAREEB,时间:2015/11/28
翻译:BigNerdCoding, 如有错误欢迎指出。原文链接

在去年智能手机的大更新之后,很多工具也同时被开发出来了。这些工具让我们开发者发布一个高性能、高质量的应用的变的更加简单了。在应用商店获得高排名以及不再很容易。而且让应用更容易拓展也是很困难的一件事。当你的应用成功的拥有百万级别的用户的时候,你需要注意应用中的所有事情以及所有操作。因此,现在每个开发者都需要面临的一个问题就是处理数据库。而这又是一件让人感到非常头疼的事情,大多数的开发者会在sqliteCore Data中挑选一个。曾经我是Core Data的拥趸,因为它在处理数据以及持久化数据方面功能非常强大。但是后来我发现使用Core Data会浪费很多时间。现在我会使用Realm,该框架能够很好的替换sqliteCore Data

Realm是什么

Realm是一个跨平台的手机端数据库支持iOS(Swift和Object双语言版本)、安卓。相比于sqliteCore Data更好也更快。除此之外,它的使用也很方便之需要几行代码就可以搞定。Realm是一个开源产品你可以免费试用。Realm之所以会出现是因为在过去的十年中移动数据库没有任何可喜的更新。过去在处理移动数据库的时候,你几乎只能选择sqlite或者在其基础上进行封装的Core Data。因为Realm并不是一个ORM(对象关系映射)且有自己的持久化引擎使得Realm容易使用并且拥有很好的性能和速度。

为什么选择Realm

Realm快的难以置信并且易用,你能看见任何你需要的东西,并且只需要几行代码就可以完成数据库的读写操作。这里我会列出所有在移动端使用Realm的好处和理由:

  • 安装简单:在后面你会发现安装Realm比你想象的还要简单,之需要在Cocoapods中添加简单的命令就能使用了。

  • 速度:Realm远快过于sqliteCore Data,官方提供的比较证据

  • 跨平台:Realm的数据库文件是跨平台的,它可以在iOS和Android中进行分享。无论你是使用Java、Object-C、还是Swift,你都可以使用高级的模型。

  • 可拓展性:当你的手机应用拥有大量的用户以及数据记录的时候可拓展就是很重要的一个特征。拓展性问题从一开始设计和选择工具的时候就需要进行认真的考虑。Realm在能够高效处理大数据量的同时依然拥有着非常好的拓展性。在应用中引入该框架会让程序的速度得到提升。

  • 良好的文档支持:Realm团队提供了可读性强、组织良好的的丰富文档给大家。如果你依旧有问题解决不了的话,可以在 Twitter、Github、Stackoverflow上去向它们寻求帮助和解答。

  • 可靠:Realm依旧被大量的创业团队和公司的移动应用使用像:Pinterest、Dubsmash、Hipmunk。

  • 免费:如此强大,而且还是完全免费的。

开始干活

让我们Realm使用教程,并用它创建一个Swift语言版本的iPhone简单Todo应用。用户在该应用中可以添加多个任务链表,每个链表里面又会有多个任务。每个任务都有一个标题、备注、到期时间,一个图像附件以及一个标记是否完成的标记量。在开始编写工程之前我们首先需要配置Xcode并安装Realm工作所需的一个工具。

需要的条件

下列条件必须满足:

  • iOS 8 or later、OS X 10.9 or later。

  • Xcode 6.3 or later。

  • Realm的有两个Swift版本,一个是2.0版本另一个是1.2版本。我们在教程中使用的是2.0版本。你也可以选择使用1.2版本的,但是该版本在未来不会被维护和支持,因此最安全的办法就是使用2.0版本。

配置Xcode并安装工具

再开始配置Xcode之前请确保你已经安装了CocoaPods,我们需要使用它在Xcode工程中安装Realm。如果你对CocoaPods不熟悉的话,你可以去官网操作安装教程。

现在,我们创建一个"Single View Application"模版的工程,并将工程命名为“RealmTasks”或者你喜欢的名称。请确保使用的是Swift语言。接下来我们在终端中切换到当前工程的目录并按照下面步骤初始化工程的CocoaPods。

pod init

使用编辑器生成文件podfile,并在文件添加如下内容

接下来运行命令"pod install"去下载安装Realm到你的工程里面。当安装完成后,你会发现文件夹下面又一个新的Xcode workspace被创建了。打开RealmTasks.xcworkspace文件,你会看见如下界面:

现在Realm已经能够使用了,但是我们还是安装一些工具类帮助我们更加容易的使用Realm。

安装Realm插件

Realm团队为Xcode提供了很好的插件,该插件能够创建Realm模型。我们使用Alcatraz来安装这个插件。该工具可以很好的帮助你自动安装那些开源的插件,模版、颜色主题。对于那些不知道Alcatrza的开发者来说,这可以节省很多的时间和精力。直接使用下面的命令安装Alcatrza:

curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh

接下来在Xcode中选择Window菜单栏下面的Package Manager,如下图:

在弹出的窗口中选择你需要安装的类型,并在搜索框中输入对应的插件、模版或者主题。我们选择Plugins,输入"Realm",在出现的结果里面选择"RealmPlugin"并安装。如下图:

此处可能在Xcode7.1以上版本会出现一些问题,解决方法

Realm Browser

最后一个工具是Realm Browser。该浏览器可以帮助你查看或者编辑你的.realm数据库文件。这些数据文件在你的应用中被创建出来,并且包含了里面的实体、属性、以及数据表中的纪录。这些文件如之前所说的一样可以在像iOS、Android这样不同的平台之间分享。你可以在iTunes store下载到最新版本的工具。打开该应用选择Tools -> Genetate demo database,应用会为你新建一个测试数据库文件你可以在浏览器中看到所有的纪录。如下图:

正如上图显示的,类RealmTestClass1有1000条纪录以及不同类型的参数(列)。我们会在下面接受它支持的类型。

现在一切准备工作都已经完成了。开始编码吧。

数据库Model类

游戏开始了!首先我们需要新建一个模型类。可以通过创建一个继承与Object的Swift类。考虑到Object是所有Realm model类的基类,你可以拓展任何拓展自Obeject的Realm model类。当你创建自己的类的时候,理所当然你需要定义属性。Realm支持下面各种类型的属性

  • Int,Int8,Int16,Int32,and Int64

  • Boolean

  • Float

  • String

  • NSDate

  • NSData

  • Class extends Object => Used for One-to-one relations

  • List<Object> => Used for one-to-many relations

List在Realm类中表示对象实例的集合,就像上面演示数据库截图表示的那样。截图中的最后一列就是一个存在于另一张表中纪录指针的数组。在使用Realm模型类的时候,你可以像对待其他Swift类一样对待它。例如,你可以在类里面添加函数方法,协议。

Talk is cheap,show me the code

猜你在找的Swift相关文章