Realm Blog

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 to CVarArgType so it can now be passed as an argument to Results.filter(_:...) and List.filter(_:...).
  • SortDescriptor now conforms to the Equatable and StringLiteralConvertible 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.

Realm Team

At Realm, our mission is to help developers build better apps faster. We provide a unique set of tools and platform technologies designed to make it easy for developers to build apps with sophisticated, powerful features — things like realtime collaboration, augmented reality, live data synchronization, offline experiences, messaging, and more.

Everything we build is developed with an eye toward enabling developers for what we believe the mobile internet evolves into — an open network of billions of users and trillions of devices, and realtime interactivity across them all.

Get more development news like this