本文档的目的是为了方便大家在 Swift 工程中使用 BmobSDK,实现应用的快速开发。下面介绍怎么在 Swift 工程中使用 BmobSDK。

在 Bmob 上创建应用

关于如何创建应用,具体请参照快速入门

创建 Swift 项目

使用 Xcode 创建一个新的 Single View Application

Language 选择 Swift

设置 BmobSDK

方式一:通过 CocoaPods 安装(推荐)

在项目根目录下创建 Podfile 文件,内容如下:

target "你的项目名称" do
  platform :ios, "15.6"
  use_frameworks!
  pod 'BmobSDK'
end

"你的项目名称" 替换为你在 Xcode 中创建的实际项目名称。

然后在终端中进入项目目录,执行:

pod install

注意: 使用 CocoaPods 安装完成后,请关闭当前的 .xcodeproj 项目文件,改为打开项目目录下新生成的 .xcworkspace 文件。后续所有操作都应在 .xcworkspace 中进行,否则会导致找不到 Pod 引入的库而编译报错。

方式二:手动导入 SDK

从https://github.com/bmob/Bmob-iOS-SDK下载最新的 BmobSDK,解压后将 SDK 文件(BmobSDK.xcframework)拖入项目中。

然后添加以下依赖库文件:

  • Foundation.framework
  • CoreLocation.framework
  • Security.framework
  • CoreGraphics.framework
  • MobileCoreServices.framework
  • CFNetwork.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • AVFoundation.framework
  • MediaPlayer.framework
  • Photos.framework
  • libz.1.2.5.tbd
  • libicucore.tbd
  • libsqlite3.tbd
  • libc++.tbd
  • libWeChatSDK.a(如果需要使用支付功能,必须导入,可从微信开放平台下载最新的)

添加完成后,应该像这个样子:

创建桥接头文件

由于 BmobSDK 是 Objective-C 编写的,在 Swift 项目中使用需要创建一个桥接头文件(Bridging Header)。

最快捷的方式是:在项目中新建一个任意名称的 Objective-C 文件(如 test.m),Xcode 会自动询问你是否创建桥接头文件,点击 Create Bridging Header 即可:

完成之后,你就可以删除 test.m 文件了。然后在生成的桥接头文件 {你的项目名}-Bridging-Header.h 中引入 BmobSDK:

#import <BmobSDK/Bmob.h>

测试 CRUD 功能

初始化 SDK

testApp.swift 中注册你的 AppKey(登录 Bmob 控制台 后,在 应用设置 > 应用密钥 中获取):

import SwiftUI

@main
struct test202603App: App {
    init() {
        Bmob.register(withAppKey: "xxxxx")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

创建数据

ViewController.swift 中添加以下方法,用于向 GameScore 表插入一条数据:

func save() {
    let gamescore = BmobObject(className: "GameScore")
    gamescore.setObject("John Smith", forKey: "playerName")
    gamescore.setObject(90, forKey: "score")
    gamescore.saveInBackground { (isSuccessful, error) in
        if let error = error {
            print("保存失败: \(error.localizedDescription)")
        } else {
            print("保存成功")
        }
    }
}

然后在 viewDidLoad 中调用:

override func viewDidLoad() {
    super.viewDidLoad()
    save()
}

运行项目后,可以在 Bmob 控制台的后台查看是否创建成功,如下图所示:

查询数据

查询 BmobUser 表中的用户列表,按创建时间倒序排列:

func queryUsers() {
    let query: BmobQuery = BmobUser.query()
    query.orderByDescending("createdAt")
    query.findObjectsInBackground { (array, error) in
        guard let results = array else { return }
        for item in results {
            if let obj = item as? BmobUser {
                print("objectId: \(obj.objectId ?? ""), username: \(obj.username ?? "")")
            }
        }
    }
}

更新数据

根据 objectId 更新一条已有的 GameScore 记录:

func update() {
    let gamescore = BmobObject(outDatatWithClassName: "GameScore", objectId: "替换为实际的objectId")
    gamescore.setObject(91, forKey: "score")
    gamescore.updateInBackground { (isSuccessful, error) in
        if let error = error {
            print("更新失败: \(error.localizedDescription)")
        } else {
            print("更新成功")
        }
    }
}

删除数据

根据 objectId 删除一条 GameScore 记录:

func deleteGameScore() {
    let gamescore = BmobObject(outDatatWithClassName: "GameScore", objectId: "替换为实际的objectId")
    gamescore.deleteInBackground { (isSuccessful, error) in
        if let error = error {
            print("删除失败: \(error.localizedDescription)")
        } else {
            print("删除成功")
        }
    }
}

案例源码

点击下载源码

更多问题请控制台工单联系我们