Я начал использовать инструментарий AWS Amplify на iOS, прототип SwiftUI.В руководстве есть это для runQuery:
func runQuery(){
appSyncClient?.fetch(query: ListTodosQuery(), cachePolicy: .returnCacheDataAndFetch) {(result, error) in
if error != nil {
print(error?.localizedDescription ?? "")
return
}
result?.data?.listTodos?.items!.forEach { print(($0?.name)! + " " + ($0?.description)!) }
}
}
Когда я вызываю его, я получаю дубликаты в выводе - кэшируется и выбирается.
Какова цель политики returnCacheDataAndFetch?Как эта политика используется на практике?
ПРИМЕЧАНИЕ. У меня есть несколько изменений, не использующих Todos, а просто общий MyType из генератора aws cli.
func runMutation(){
let mutationInput = CreateMyTypeInput(title: "Use AppSync", content:"Realtime and Offline")
appSyncClient?.perform(mutation: CreateMyTypeMutation(input: mutationInput)) { (result, error) in
if let error = error as? AWSAppSyncClientError {
print("Error occurred: \(error.localizedDescription )")
}
if let resultError = result?.errors {
print("Error saving the item on server: \(resultError)")
return
}
}
}
func runQuery(){
appSyncClient?.fetch(query: ListMyTypesQuery(), cachePolicy: .returnCacheDataAndFetch) {(result, error) in
if error != nil {
print(error?.localizedDescription ?? "")
return
}
result?.data?.listMyTypes?.items!.forEach { print(($0?.id)! + " " + ($0?.title)! + " " + ($0?.content)!) }
}
}