CoreStore создает объект и возвращает его в случае успеха - PullRequest
0 голосов
/ 25 апреля 2019

Я использую этот код для создания объекта:

CoreStore.perform(
            asynchronous: { (transaction) -> Void in
                let summary = transaction.create(Into<SummaryEntity>())

        },
            completion: { _ in }
        )

В завершение я хотел бы вернуть только что созданный итоговый объект.

Как это сделать?

Я сделал что-то подобное, но не уверен, для чего нам нужно много развёрток и fetchExisting функция

CoreStore.perform(
            asynchronous: { (transaction) -> Routine? in

                let routine = try! transaction.importUniqueObject(
                    Into<Routine>(),
                    source: routineDictionary)

                return routine
        },
            success: { (transactionRoutine) in

                guard let unwrappedTransactionRoutine = transactionRoutine else {
                    return
                }

                let routine = CoreStore.fetchExisting(unwrappedTransactionRoutine)

                guard let unwrappedRoutine = routine else {
                    return
                }

                completion(.data(unwrappedRoutine))
        },
            failure: { (error) in
                // ...
        }
        )

Это ошибка распаковки из fetchExisting:

enter image description here

1 Ответ

1 голос
/ 26 апреля 2019

Я не совсем уверен, что вы спрашиваете, поскольку ваши примеры совершенно разные.

Если вы хотите создать объект, вы должны сделать то же самое, что и для импорта. транзакция.create не возвращает необязательное значение, поэтому просто сделайте так, чтобы ваше закрытие в первом возвращало объект:

CoreStore.perform(asynchronous: { (transaction) -> SummaryEntity in
    let summary = transaction.create(Into<SummaryEntity>())
    return summary
}, success: { (summary) in
    let fetchedSummary = CoreStore.fetchExisting(summary)
    completion(.data(fetchedSummary))
}, failure: { (error) in
    // ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...