3
votes

The Swift integration of a new Realm-DB (realm 0.92.3) under Xcode 6.3 and iOS10.10.3 basically works for the iPhone (not for the Apple-Watch yet). The integration of the same realm-framework under Watchkit (i.e. Apple-Watch) does not work yet.

The RealmSwift.framework is integrated (dragged into) the Embedded-Binaries as described here1 and here2. See screenshot below :

enter image description here

When running the Watchkit-App with the simulator the following error occurs :

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /Users/XXX/Library/Developer/CoreSimulator/Devices/3FE99-9-4C4C2/data/Containers/Bundle/Application/8B4-DF19F34-222973/MyApp.app/PlugIns/MyApp WatchKit Extension.appex/MyApp WatchKit Extension
  Reason: image not found
(lldb) 

What is still wrong ???

The Framework-Search-Path of the main-app is set. The ones for MyApp Watchkit Extension and MyApp Watchkit App are not set. Setting them does not change the above error. What is still missing ???

2
Do you have any swift files in your App Extension / main app? If not, swift-stdlib-tool won't copy over the swift runtime dylibs, even if you have a framework that requires them.segiddins
Yes, I do have swift-files in both (i.e. App Extension and main-app)iKK
I finally found a solution: Start over again with a new project (identical bundle-name) and copy all relevant storyboard- swiftFiles, frameworks, etc etc from a previously made project-copy step-by-step into the new project. That way, my watchKit starts working with the simulator ! It is, at least, unfortunate not to know what exactly was missing before !iKK

2 Answers

2
votes

I would recommend that you use CocoaPods.

I did it like you did, with dynamic frameworks, but when I try to submit my application to iTunes Connect using Xcode's Organizer, I could not because of the nested frameworks. Realm.framework is inside RealmSwift.framework, and that is not okay with Apple. So I try and try but nothing helped…

Then I used CocoaPods and everything worked as it should.

Here are instructions for CocoaPods installation:

Install CocoaPods 0.37.1 or later ([sudo] gem install cocoapods).
In your Podfile, add use_frameworks! and pod 'RealmSwift' to your main and test targets.
From the command line, run pod install.
Use the .xcworkspace file generated by CocoaPods to work on your project!
1
votes

This Podfile finally did it for me (see below). Everything worked after that... To install just open a terminal, go to your App's folder (where you place the Podfile) and type

pod install

After that make sure to open from now on the "MyApp.xcworkspace" (no longer "MyApp.xcodeproj") and you are all set !

Here is the podfile that worked :

xcodeproj 'MyApp.xcodeproj'
workspace 'MyApp.xcworkspace'
platform :ios, '8.3'

source 'https://github.com/artsy/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'

use_frameworks!
link_with 'MyApp', 'MyApp WatchKit Extension'

def shared_pods
      pod 'RealmSwift', '>= 0.93.2'
end

target 'MyApp' do
    shared_pods
end

target 'MyAppTests' do
    shared_pods
end

target 'MyApp WatchKit Extension' do
    shared_pods
end