0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Parse Server Swift SDKの使い方(ファイルの取得方法)

Posted at

ニフクラ mobile backendは3月末で終了します

ニフクラ mobile backendからの移行先として、お勧めしているのがParse Serverです。設計思想が近く、変更するコード量が少なく済むのではないかと思います。

Parse ServerではiOS向けにSDKを提供していますが、Swift SDKについてはあまりドキュメントが充実していません。そこで、各機能の使い方を解説します。今回はファイルストア相当として使える、ファイルフィールドの取得方法を紹介します。

Swift SDKとObjective-C SDKのどちらを使うべきか

Parse ServerにはSwift SDKとObjective-C SDKが用意されています。機能的にいうと、Objective-C SDKの方が多いようです。しかし、公式メッセージとしてはSwift SDKを使っていくのを奨励しています。

Parse Server Swift SDKのインストール

Swift SDKのインストールは、CocoaPodsやCarthageなどが使えます。しかし、一番簡単なのはXcodeのPackage Dependenciesを使う方法でしょう。

XcodeのFileメニューより、Add Package Dependenciesを選択して、出てきたダイアログで以下のURLを指定します。

https://github.com/parse-community/Parse-Swift.git

そして、利用するファイルでSDKをインポートします。

import ParseSwift

初期化

SwiftUIの例です。初期化は (アプリ名)App.swift にて行います。そして、初期化は ParseSwift.initialize にて行います。指定するアプリケーションID、クライアントキー、サーバーURLはそれぞれParse Serverを立ち上げる際に指定したものを使います。

マスターキーも指定できるようですが、アプリ側では使わない方が良いかと思います。

import SwiftUI
import ParseSwift

@main
struct ParseDemoApp: App {
    init() {
        ParseSwift.initialize(applicationId: "YOUR_APP_ID", clientKey: "YOUR_CLIENT_KEY", serverURL: URL(string: "https://example.com/parse")!)
    }
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Parse Serverにはファイルストアはありません

Parse ServerにはNCMBでいうファイルストア相当の機能はありません。ファイルはデータストアの1フィールドに紐付けて保存します。また、取得できるのはURLのみで、実データの取得はURLからダウンロードする形になります。

今回は例として、以下のような構造体を定義しています。

import ParseSwift

struct Item: ParseObject {
    // 以下は必須です
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?
    var originalData: Data?

    // 以下は自分で定義したフィールドです
    var name: String?
    var file: ParseFile?
}

そして、以下のようにデータを取得できます。

let query = Item.query()
let items = try? query.find()
if ((items) != nil) {
		if items![0].file != nil {
			print(items![0].file?.url ?? "No file")
		}
}

ここで取得できる url は以下のようになります。

https://example.com/parse/files/appId/your_file.jpeg

後はこのURLを使って画面に表示するか、実データをダウンロードして処理する形になります。

まとめ

Parse ServerとNCMBでは、バイナリファイルの扱いがまったく異なります。ファイルに対するACLという概念はありませんので、URLが分かってしまうと誰でもアクセスできます。NCMBで言えば、標準でファイルストアのHTTPS公開が有効になった状態と言えます。

移行する場合には、 files のようなクラスを作成し、そこにファイルを紐付ける形になるでしょう。もちろん、Parse Serverらしくデータストアの1フィールドとして保存も可能です。

ファイルストアについては違いがあるとはいえ、データの管理方法などはParse ServerとNCMBで似ています。他のmBaaSと比べると、修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。

parse-community/Parse-Swift: The Swift SDK for Parse Platform (iOS, macOS, watchOS, tvOS, Linux, Android, Windows)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?