Realm Objective-C & Swift 0.93
We just pushed Realm Objective-C and Realm Swift updates to this website, and to CocoaPods. This release fixes several Swift-related issues, enables automatic indexing of int primary keys, and changes the type of schema versions to be identical on all architectures.
Read on for an overview of the changes included in 0.93.
Realm Swift: Changes to installation steps
If you’re using Realm Swift as a prebuilt binary, either through our download zip or through Carthage, you’ll need to update your project’s build settings. We’ve made changes to our packaging in order to pass iTunes Connect validation.
In Realm Swift 0.92.x, we were packaging Realm.framework
nested inside RealmSwift.framework/Frameworks/
to simplify distribution and installation. However, we’ve since discovered that iTunes Connect rejects nested bundles in iOS apps, which meant that this particular distribution scheme wouldn’t allow users to submit apps to the App Store.
Thankfully, the solution was simple: don’t nest frameworks.
If you were having issues integrating the prebuilt binary framework, please try again with this release. As always, refer to our Swift installation instructions for up-to-date installation steps.
Schema versions are now represented in a platform-independent way
Schema versions are now represented as uint64_t
in Objective-C and UInt64
in Swift, so that they have the same representation on all architectures. This is an API breaking change that will require you to update your code relating to schema versions, but it simplifies doing cross-platform work.
Swift API improvements
-
Results
now conforms toCVarArgType
so it can now be passed as an argument toResults.filter(_:...)
andList.filter(_:...)
. -
SortDescriptor
now conforms to theEquatable
andStringLiteralConvertible
protocols, which should simplify sorting by multiple columns. For example:results.sorted(["a", "b", "c"])
.
Improvements to indexed properties
- Int primary keys are once again automatically indexed.
- Attempting to mark a property of a type that cannot be indexed as indexed will now throw an exception with a more descriptive message.
Lessons in executable code signing
We discovered that Xcode considers text files starting with a shebang (#!
) to be executable, even when the executable permission bit isn’t set. Surprise!
This meant that Xcode was attempting to code sign the script we bundle into our dynamic Realm.framework
, to strip simulator architectures when submitting to the App Store (a workaround for rdar://19209161). So we simply removed the shebang from the file.
If you were getting code signing errors when building apps with the prebuilt dynamic Realm.framework
or RealmSwift.framework
, please try again with this new release, those issues should hopefully be resolved. As always, please refer to our Objective-C and Swift installation instructions for up-to-date steps.
Thanks for reading. Now go forth and build amazing apps with Realm! As always, we’re around on Stack Overflow, GitHub, or Twitter.