0

我使用此代码创建一个对象:

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

在此处输入图像描述

4

1 回答 1

1

我不确定你在问什么,因为你的例子完全不同。

如果您想创建一个对象,您将执行与导入相同的操作。transaction.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
    // ...
})
于 2019-04-26T11:50:00.050 回答