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
のようにどちらを指しているのかを明示的に示すことでエラーが解消されます。
コメント