4

Swift で作成したアプリに Realm を追加しようとしています。私はチュートリアルに従っていますが、それを機能させることができないようです。最大の問題は、Realm をインポートしようとするとNo such module 'Realm' 、他に何を試せばよいかわからないということです。以下の私の努力を見ることができます。

ここで手順を確認できます: http://realm.io/docs/cocoa/0.85.0/#swft

以下の手順もコピーしました。

現在、Swift の依存関係を管理するための適切なインフラストラクチャが不足しているため、プロジェクトで Realm を使用するには、次の手順が必要です。

  1. ターミナルを開き、最上位のプロジェクト ディレクトリに cd して、コマンド git submodule add git@github.com:realm/realm-cocoa.git を入力して、Realm をサブモジュールとして追加します。
  2. realm-cocoa フォルダーを開き、Realm.xcodeproj を Xcode プロジェクトのファイル ナビゲーターにドラッグします。
  3. Xcode で、青いプロジェクト アイコンをクリックしてターゲット設定ウィンドウに移動し、サイドバーの [ターゲット] セクションでアプリケーション ターゲットを選択します。
  4. そのウィンドウの上部にあるタブ バーで、[Build Phases] パネルを開きます。
  5. 「Target Dependencies」グループを展開し、Realm の iOS フレームワークを追加します。
  6. 「Link Binary with Libraries」グループを展開し、Realm の iOS フレームワークと libc++.dylib を追加します。
  7. パネルの左上にある + ボタンをクリックし、「新しいコピー ファイル フェーズ」を選択します。この新しいフェーズの名前を「Copy Frameworks」に変更し、「Destination」を「Frameworks」に設定して、Realm.framework を追加します。
  8. realm-cocoa/Realm/Swift/RLMSupport.swift にあるファイルを Xcode プロジェクトのファイル ナビゲーターにドラッグし、[必要に応じて項目をコピー] チェックボックスをオフにします。

以下は私のプロジェクトでどのように見えるかです:

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

7

これが機能しない理由は正確にはわかりませんが、回避策は次のとおりです。

  1. 最新の指示に従ってください。

  2. たとえば、ブリッジヘッダーを作成します

    • xcode プロジェクトに新しい Objective-C クラスを追加します。
    • ブリッジング ヘッダーの作成に同意する
    • Objective-C クラスを削除する

  3. これをブリッジング ヘッダーに追加します。

    #import "Realm/Realm.h"

  4. Import RealmRLMSupport.swift を含め、コードからすべてのステートメントを削除します

  5. これで動作するはずです。たとえば、これをViewController.swiftに入れてテストします

    import UIKit
    
    class Person: RLMObject {
        dynamic var name = ""
        dynamic var birthdate = NSDate(timeIntervalSince1970: 1)
    }
    
    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let author = Person()
            author.name = "David Foster Wallace"
    
            // Get the default Realm
            let realm = RLMRealm.defaultRealm()
    
            // Add to the Realm inside a transaction
            realm.beginWriteTransaction()
            realm.addObject(author)
            realm.commitWriteTransaction()
    
            // Print all Persons
            println(Person.allObjects())
        }
    }
    

どちらが印刷されますか:

RLMArray <0x7a243760> (
    [0] Person {
        name = David Foster Wallace;
        birthdate = 1970-01-01 00:00:01 +0000;
    }
)
于 2014-10-03T11:59:21.243 に答える
4

Realm の担当者と話しているところ、最新の手順は Realm <= 0.85 では機能しないことがわかりました。彼らはフレームワークのビルド方法を変更したため、もう機能しません。彼らは、誰もが Swift で抱えている問題を修正する 0.86 を今日中にリリースすると述べた。その間、誰でも最新のフレームワークを利用できるテスト プロジェクトがあります。https://github.com/smitt0​​4/testRealm

バージョン 0.86 がリリースされ、これはもはや問題ではありません。

于 2014-10-03T16:10:46.023 に答える
2

Swift のインストール手順は長くて複雑だったので、あなたや他の何人かのユーザーが問題に遭遇したことは驚くことではありません。

こちらの最新のインストール手順に従ってください。

于 2014-10-02T20:51:29.190 に答える