2014-10-02 71 views
4

我正在嘗試將Realm添加到以swift編寫的應用程序中。我跟着教程,我似乎無法得到它的工作。最大的問題是,當我嘗試導入Realm時,我得到了No such module 'Realm'我不知道還有什麼要嘗試的。你可以在下面看到我的努力。在Swift應用程序中安裝Realm

您可以在這裏看到的說明:http://realm.io/docs/cocoa/0.85.0/#swft

我也複製下面的說明:

由於目前缺乏斯威夫特依賴管理適當的基礎設施,在項目中使用的境界需要以下步驟:

  1. 打開終端添加領域視作一個子模塊,CD-ING到您的頂級項目目錄,並輸入以下命令git的子模塊添加[email protected]:境界/境界,cocoa.git
  2. 打開realm-cocoa文件夾,將Realm.xcodeproj拖到Xcode項目的文件導航器中。
  3. 在Xcode中,通過單擊藍色項目圖標並選擇側欄中「目標」部分下的應用程序目標,導航到目標配置窗口。
  4. 在該窗口頂部的標籤欄中,打開「Build Phases」面板。
  5. 展開「Target Dependencies」gorup,並添加Realm的iOS框架。
  6. 展開「Link Binary with Libraries」組,並添加Realm的iOS框架以及libC++。dylib。
  7. 單擊面板左上角的+按鈕,然後選擇「新建複製文件階段」。將此新階段重命名爲「複製框架」,將「目標」設置爲「框架」,並添加Realm.framework。
  8. 將realm-cocoa/Realm/Swift/RLMSupport.swift中的文件拖放到Xcode項目的文件導航器中,取消選中「如果需要複製項目」複選框。

下面是什麼樣子在我的項目:

enter image description here enter image description here enter image description here enter image description here enter image description here

+1

我們正在努力簡化安裝說明。一旦新指令可用,我們會在幾個小時內發佈對此問題的答案。 – jpsim 2014-10-02 17:18:15

回答

4

我一直在與境界的人說話,事實證明,最新指令不適用於Realm < = 0.85他們改變了他們構建框架的方式,並且不再工作。他們表示,他們今天晚些時候將發佈0.86版本,以解決任何人使用Swift時遇到的問題。與此同時,我有一個測試項目,任何人都可以從最新的框架。 https://github.com/smitt04/testRealm

版本0.86現在已停用,這已不再是問題。

2

雨燕安裝說明是長期而曲折的,所以我並不感到驚訝,你和其他幾個用戶遇到問題。

請按照最新安裝說明here

+2

所以我嘗試了新的安裝說明。我遇到了兩個問題。 1.您下載的zip壓縮文件中沒有swift文件夾,僅在git克隆中。 2.所以我嘗試了git clone,並將文件'Swift/RLMSupport.swift'拖到我的項目中,這就是問題所在。在該文件的頂部,它說,'試圖導入時沒有這樣的模塊'Realm''。 所以我仍然遇到了Realm的問題。我似乎能夠在沒有swift文件的情況下進行編譯,但沒有嘗試使用它。但我無法用它來編譯。 – smitt04 2014-10-02 22:39:41

+0

我繼續收到相同的錯誤。該指令目前在XCode 6/Swift中無法正常工作。這不是一個明確的答案,但我建議現在堅持使用obj-c作爲Realm。 (我跟隨了今天上傳的youtube視頻)http://i.imgur.com/M37Q7Th.png – CaptainCOOLGUY 2014-10-03 01:33:49

+1

一旦Realm 0.86.0發佈,指令將會在未來幾個小時內發佈。 – jpsim 2014-10-03 17:48:35

7

我不知道到底爲什麼這是行不通的,但這裏是一個解決辦法:

  1. 按照最新指示。

  2. 通過

    • 創建一個橋接報,例如一個新的Objective-C類添加到您的Xcode項目。
    • 同意有一個橋接報創建
    • 刪除Objective-C類

  3. 在橋接報頭補充一點:

    #import "Realm/Realm.h"

  4. 刪除任何Import Realm聲明從您的代碼,包括從RLMSupport.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; 
    } 
)