プロジェクション

@propertyWrapper
public struct Projected<T, Value> : AnyProjected where T : RLMObjectBase

@Projected は、Realm によって管理される必要があるProjectionプロトコルのプロパティを宣言するために使用されます。

使用例:

public class Person: Object {
    @Persisted var firstName = ""
    @Persisted var lastName = ""
    @Persisted var address: Address?
    @Persisted var friends: List<Person>
    @Persisted var reviews: List<String>
}

class PersonProjection: Projection<Person> {
    @Projected(\Person.firstName) var firstName
    @Projected(\Person.lastName.localizedUppercase) var lastNameCaps
    @Projected(\Person.address.city) var homeCity
    @Projected(\Person.friends.projectTo.firstName) var firstFriendsName: ProjectedCollection<String>
}

let people: Results<PersonProjection> = realm.objects(PersonProjection.self)
  • 型のデフォルト値に遅延初期化されるプロパティを宣言します。

    宣言

    Swift

    public init(_ projectedKeyPath: KeyPath<T, Value>)