LoginSignup
10
7

More than 5 years have passed since last update.

RealmデータをwatchOSとiOSとの間でやりとりする(2)

Last updated at Posted at 2016-11-02

はじめに

(RealmデータをwatchOSとiOSとの間でやりとりする(1)の続きになります。)

watchOSとiOSとの間でRealmのデータをやりとりする実装方法について述べます。
watchOS2+、iOS9+、Swift 3を前提に話を進めます。
動作するコードをサンプルプロジェクトとしてGitHubに公開しました。実機でランすれば、速度感を体験できます。

CocoaPodsでRealmを導入

RealmSwiftを利用したいので、CocoaPods 1.0.0以降では、Podfileを次のように記述します。

target 'SampleRealmOnWatchOS3' do
dynamic frameworks
  use_frameworks!
  pod 'RealmSwift'
end

target 'SampleWatchApp_Extension' do
  use_frameworks!
  platform :watchos, '2.0'
  pod 'RealmSwift'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.0'
    end
  end
end

サンプルでは、SampleRealmOnWatchOS3がiOSアプリのターゲット名、SampleWatchApp_ExtensionがwatchOSアプリのものとなっています。

ターミナルからpod installを実行して、正常終了すれば準備完了です。

これで、iOS/watchOSの双方でRealmSwiftをimportできるようになりました。

Realmのデータモデルのソースファイルを共有する

iOS/watchOSでRealmのデータをやりとりするために、データモデルのSwiftファイルを共用できるようにする手順を見ていきます。

1. publicでデータモデルを共用できるようにする

まず、データモデルをiOSアプリのターゲット向けに作成します。
サンプルでは、データモデルのクラスFieldについて、Field.swiftをiOSアプリのターゲットSampleRealmOnWatchOS3向けに作成し、次のように定義しています。

Field.swift
import RealmSwift

public class Field: Object {
    public dynamic var text: String?
}

アクセスコントロールpublicにしています。iOSアプリのターゲットSampleRealmOnWatchOS3とwatchOSアプリのターゲットSampleWatchApp_Extensionは別のモジュールなので、この垣根を超えてソースを共用するために指定しています。

2. Compile Sourcesに追加する

1.で作成した.swiftファイルはiOSアプリのターゲットSampleRealmOnWatchOS3に帰属しています。ソース共用のためには、watchOSアプリの(正確にいうと、それが包含するエクステンションの)ターゲットSampleWatchApp_Extensionにもソースを帰属させる必要があります。

TARGETS→SampleWatchApp_Extension→Build Phases→Compile Sources項目の中に、Field.swiftファイルをドラッグドロップして追加します。

screenshot.png

これで、iOS/watchOSアプリが同じソースファイルをしてデータモデルを利用できるようになりました。

関連記事

RealmデータをwatchOSとiOSとの間でやりとりする(3)

10
7
0

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
10
7