Converting RealmSwift to Xcode9 / Swift 4
Xcode: 9.0 GM (9A235)
(tried on 2017/9/12)
In your existing xcode project, you might see this error if you convert swift version to 4.
Usually I must be able to use it through Carthage, but now I couldn’t.
It seems the problem is RealmSwift doesn’t take measures against Swift 4.
So let me share how I fixed it.
Thanks in advance
Before that, confirm the xcodebuild version.
$ sudo xcode-select -s /Applications/Xcode9.app
$ xcodebuild -version
Build version 9A235
- Change swift version to 4
select TARGETS then move to Build Settings > Swift Language Version.
Choose Swift 4.
2. Build RealmSwift by yourself
a. For now, download RealmSwift manually
$ git clone --recursive https://github.com/realm/realm-cocoa.git
$ cd realm-cocoa
$ git checkout v2.10.0
b. fetch submodule
# at root of realm-cocoa directory
$ git submodule update --init
c. build using script, passing argument by devices you want
# build will fail if you forget previous step
$ REALM_SWIFT_VERSION=4.0 sh build.sh ios-swift
It takes time.
※ Or you can choose the other devices.
$ REALM_SWIFT_VERSION=4.0 sh build.sh osx-swift
$ REALM_SWIFT_VERSION=4.0 sh build.sh watchos-swift
$ REALM_SWIFT_VERSION=4.0 sh build.sh tvos-swift
d. Gotcha! binaries will be produced in the directory realm-cocoa/build/ios/swift-4.0.
You only have to replace the old frameworks with the new stuffs.
Well done! Mission completed.
In my private projects, Conversion to Swift 4 was easy (I only have to fix NSAttributedStringKey and add @objc annotation before keyword “dynamic”. Xcode9 taught me everything I should do.)
Thanks for reading! Happy coding.