使用 Swift 和 LeanCloud 构建 iOS 应用

苹果在今年(2014)的 WWDC 大会上发布了一门新的开发语言 Swift。我们注意到很多开发者对 Swift 感兴趣,于是我们第一时间尝试了怎么用 LeanCloud SDK 和 Swift 构建 iOS 应用,并把方法告诉大家,方便使用 LeanCloud 服务的开发者能更快适应新的开发语言。

如果你还不知道 Swift 或者知之甚少,可以先看看苹果官方的介绍
The Swift Programming Language 或者 The Swift Programming Language (iBooks Store)

Swift 对于 iOS 的开发者来说,一个最重要的特点就是它完全兼容已有的 Objective-C 开发库,不论是系统已有的还是第三方提供的。下面介绍怎么在 Swift 工程中使用 LeanCloud SDK。

1、在 LeanCloud 网站创建应用

如果你还没有 LeanCloud 帐号,请先进行注册,输入应用名称,如图:

swift_app_01
创建完后切换到应用 Key 可以看到应用的 ID 和 Key

swift_app_02

2、创建 iOS8 项目并选择 Swift

使用 Xcode6 创建一个新的 Single View Application,注意 Language 选择 Swift

swift_app_03

3、设置 LeanCloud SDK

(2016-01-11)请参考官方文档 iOS / OS X 安装指南 来了解最新的安装步骤。

下载最新发布的 iOS SDK

swift_app_04
将下载的.zip 文件解压缩,将 AVOSCloud.framework 拖放到你的项目里:

swift_app_05
切换到 Project->Build Phases 下面,确认 AVOSCloud framework 已经加入到 Link Binary with Libraries 的列表里面了。

swift_app_06
在这里,我们还需要加入下面这些库:

  • SystemConfiguration.framework
  • MobileCoreServices.framework
  • CoreTelephony.framework
  • CFNetwork.framework
  • CoreLocation.framework

swift_app_06_1
现在已经加入了所有 LeanCloud SDK 运行需要的库。编译运行一下,没有任何功能,但可以先确认一下工程是否正常。

在 Target 的 Build Settings 中,为 Other Linker Flags 增加:

  • lz
  • licucore
  • ObjC
  • lc++(Crash Reporting 模块需要)
  • lsqlite3(IM 模块需要)

4、创建桥接头文件(Bridging Header)

这是 Swift 神奇的地方,你只要创建一个.h 头文件,并把你想在 Swift 中使用的 Objective-C 的头文件都包含进来,你就可以在 Swift 使用 Objective-C 的类和方法了。
你可以自己手动创建一个桥接头文件并在项目配置项里面进行设置,但是我们可以使用更快捷的方式。在你的项目里创建一个无用的 Objective-C 类文件(如:Dummy.m),Xcode 将询问你是否要创建一个桥接头文件:

swift_app_07
自然你应该选择 Yes, 然后你的项目应该是这样子:

swift_app_08
现在可以删除 Dummy.m 文件了,它已经完成了它的使命!然后在桥接头文件里面添加以下代码:

#import <AVOSCloud/AVOSCloud.h>

现在再编译运行一下,还是没有任何功能,再次确认工程是否正常。

5、添加示例代码

LeanCloud 网站上的 iOS 教程提供的代码都是使用的 Objective-C,我们需要将其转换成 Swift,这个过程并不复杂。如下面的代码:

[AVOSCloud setApplicationId:@"aus34ilterer5zfqn8vvunofpk8i93h24dzy3efb7zox6vsd"
              clientKey:@"v57di6xut4sutups84gzxoqxetze01kg9023eiyg13hc033u"];

你可以装换成这样:

AVOSCloud.setApplicationId("aus34ilterer5zfqn8vvunofpk8i93h24dzy3efb7zox6vsd",
              clientKey: "v57di6xut4sutups84gzxoqxetze01kg9023eiyg13hc033u")

现在我们写一个最简单的测试,在 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 加入上面的代码,现在应该是这样:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    AVOSCloud.setApplicationId("aus34ilterer5zfqn8vvunofpk8i93h24dzy3efb7zox6vsd", clientKey: "v57di6xut4sutups84gzxoqxetze01kg9023eiyg13hc033u")
    return true
}

然后修改 ViewController 的 viewDidLoad 方法:

override func viewDidLoad() {
    super.viewDidLoad()
    var testObject:AVObject = AVObject(className: "TestObject")
    testObject["foo"] = "bar"
    testObject.save()
}

现在再编译运行一下。还是看不到任何变化!你还差一步…

6、验证结果

现在我们回到 LeanCloud 网站,在 MyAwesomeApp 的管理界面中切换到数据选项

swift_app_09
你可以看到左边栏如下:

swift_app_10
现在可以在 TestObject 的表里面看到你在示例代码里面添加的列:

swift_app_11
如果你看到了类似上面的数据,恭喜你,LeanCloud 已经在你的应用里面运行成功了!你可以买个冰淇淋庆祝一下!

回顾

在这个教程里讲述了以下几点:

  1. 创建 LeanCloud 应用
  2. 创建 iOS 8 的 Swift 项目
  3. 添加 AVOSCloud.framework 到你的项目里
  4. 创建 Swift 调用 LeanCloud SDK 需要用到的桥接头文件(bridging header)
  5. 写一个简单的示例来创建并存储一个自定义对象
  6. 验证自定义对象的数据是否在服务器上保存

这只是开始,为了更深入的使用 Swift 和 AVOSCloud 服务,推荐你看看 iOS/OS X 指南Using Swift with Cocoa and Objective-C
以及 AVOSCloud SDK 的 Demo,这将有利于你构建更酷的应用!

使用 Swift 和 LeanCloud 构建 iOS 应用》上有9条评论

  1. michael shen

    在 Target 的 Build Settings 中,为 Other Linker Flags 增加:
    +

    -lz
    -licucore
    -ObjC
    -lc++(Crash Reporting 模块需要)
    -lsqlite3(IM 模块需要)

    — 没有上面这一步, appdidfinishing… avoscloud。set app key id 通得过?。。。。国内的 blog,呵呵

    回复
  2. Loismur

    全部按着博主的方法来的但是都最后数据一栏没有出现新的数据啊。== 是不是我漏掉了什么东西。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注