我有以下片段:
fragment User on UserResponse {
firstName
lastName
emailAddress
emailConsent
phoneNumber
}
当在突变中用作根时,代码生成将正确生成根User
结构API.swift
并将该结构用作用户属性的类型Fragments
例如。:
mutation updateUserYourInformation($phoneNumber: String!, $emailConsent: Boolean!) {
updateUser(phoneNumber: $phoneNumber, emailConsent: $emailConsent) {
...User
}
}
和
mutation addRelations($spouse: Boolean!, $children: Int!, $roomMates: Int!) {
addRelations(spouse: $spouse, roommates: $roomMates, children: $children) {
...User
}
}
将生成突变,其中两者都UpdateUserYourInformationMutation.Data.UpdateUser.Fragments
具有AddRelationsMutation.Data.AddRelation.Fragments
相同的结构类型的用户User
属性。
但是,当将片段嵌套User
在突变中时,它会在 Mutation 结构中生成一个嵌套结构,这将是生成的嵌套结构中用户属性的类型Fragments
。例如:
mutation exchangePin($email: String!, $pin: String!) {
exchangePinForToken(email: $email, pin: $pin) {
valid
user {
...User
}
authToken
remainingAttempts
}
}
将生成ExchangePinMutation.Data.ExchangePinForToken.User
和ExchangePinMutation.Data.ExchangePinForToken.User.Fragments
结构。但是,正如我所料, user的属性ExchangePinMutation.Data.ExchangePinForToken.User.Fragments
是 typeExchangePinMutation.Data.ExchangePinForToken.User
而不是 type 。User
因此,类型不同,为了更新User
我的应用程序中的当前对象,我必须使用它拍摄ExchangePinMutation.Data.ExchangePinForToken.User
并初始化一个新User
对象的快照:例如:
...
let userSnapshot = data.exchangePinForToken.user?.snapshot
Session.currentUser = User(snapshot: userSnapshot)
...
也许我只是在创建我的片段和/或错误的突变?