2015-07-06 4 views
6

Я работаю над iOS App и Watchkit App.Как использовать Realm (установленный с Карфаген) с фреймворком в приложении Swift?

Я читал кое-что относительно лучших практик, и я решил создать пользовательскую базу, так как NathashaTheRobot советуют здесь: https://realm.io/news/architecting-app-apple-watch-natashatherobot/

Так что я пытаюсь использовать Realm в моей структуре.

Я следовал за installation instructions for Carthage:

  1. Add github "realm/realm-cocoa" to your Cartfile .

  2. Run carthage update .

  3. Drag RealmSwift.framework and Realm.framework from the Carthage/Build/iOS/ directory to the “Linked Frameworks and Libraries” section of your Xcode project’s “General” settings.

  4. On your application targets’ “Build Phases” settings tab, click the “+” icon and choose “New Run Script Phase”. Create a Run Script with the following contents:

    /usr/local/bin/carthage copy-frameworks

and add the paths to the frameworks you want to use under “Input Files”, e.g.:

$(SRCROOT)/Carthage/Build/iOS/Realm.framework 
$(SRCROOT)/Carthage/Build/iOS/RealmSwift.framework 

Затем я добавил свою структуру к Target Membership обоих Realm.framework и RealmSwift.framework.

Но когда я пытаюсь построить проект, я получаю эту ошибку:

ld: framework not found Realm for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Тогда я дал выстрел lipo:

$ lipo -info Carthage/Build/iOS/Realm.framework/Realm                          
Architectures in the fat file: Carthage/Build/iOS/Realm.framework/Realm are: i386 x86_64 armv7 arm64 

У вас есть какие-либо идеи о том, что я мог бы быть делаете неправильно здесь? Спасибо.


EDIT:

ОК, так что я нашел эту проблему, и это было совершенно не связан с Realm ...

Похоже, я удалил заголовки и ресурсы разделов моей структуры Построить Фаз каким-то образом (которые были и остаются пустыми). Я просто откладываю их, и все компилируется/работает так, как должно.

Headers and Resources sections

Не поддавайтесь соблазну удалить те два

+0

может изолировать и воспроизвести вашу проблему в какой-то пример проекта и толкать его где-FX, чтобы Github? –

+0

Хорошая идея, я должен был попробовать это первым. И ... это работает. Поэтому, возможно, что-то не так с моим проектом. Я найду, что, а затем обновить свой вопрос. Спасибо – Pym

+0

Полезно знать. Добро пожаловать :) –

ответ

11

Возможно ли, что это тестовая цель, которая не может найти рамки? Вам нужно будет добавить родительское расположение фреймворков к разделу «Ракурс поиска» в модульных тестах (вероятно, $(SRCROOT)/Carthage/Build/iOS).

Вот пример проекта в Swift рамках комплектации RealmSwift как зависимость, которая может вам пригодиться, чтобы сравнить параметры сборки с: https://static.realm.io/debug/ParentFramework.tgz

+0

Это уже есть в моих модульных тестах и ​​в моих рамках :( – Pym

+0

вы можете получить проект, который я загрузил для запуска? Я рад посмотреть ваш проект, чтобы помочь вам определить, что может быть настроено по-разному – jpsim

+0

Да, спасибо за вашу помощь. Я нашел решение, и на самом деле он не был связан с Realm. Я отредактировал вопрос. – Pym

Смежные вопросы