Xcode13で ‘SortDescriptor’ is ambiguous for type lookup in this context というエラーが発生した時の対処方法

Swift

Realmを使用しているXcodeプロジェクトをXcode13で開いたところ、

'SortDescriptor' is ambiguous for type lookup in this context

というエラーが発生してしまいビルドができなくなってしまいました。これの対応方法について今回は説明していきます。

原因

RealmSwiftには元々 SortDescriptor という構造体が含まれていました。

/**

 A `SortDescriptor` stores a key path and a sort order for use with `sorted(sortDescriptors:)`. It is similar to

 `NSSortDescriptor`, but supports only the subset of functionality which can be efficiently run by Realm’s query engine.

 */

https://github.com/realm/realm-cocoa/blob/master/RealmSwift/SortDescriptor.swift

しかし、Xcode13.0から Foundation フレームワークに SortDescriptor という同名の構造体が追加されてしまいました。なので、

let sortDescriptors: [SortDescriptor] =...

というような書き方をしていると、RealmのSortDescriptorを指しているのかFoundationのSortDescriptorを指しているのかがわからないのでエラーになってしまうというのが原因です。

対応方法

対応方法は非常に簡単で、

let sortDescriptors: [SortDescriptor] =...

としていたところを

let sortDescriptors: [RealmSwift.SortDescriptor] =...

としてやるか、もしくは

typealias SortDescriptor = RealmSwift.SortDescriptor

のようにどちらを指しているのかを明示的に示すことでエラーが解消されます。

コメント

タイトルとURLをコピーしました