【发布时间】:2020-05-13 00:28:39
【问题描述】:
在应用程序安装开始时,我创建了一些对象,但在 UI 上创建后它们没有排序,我必须关闭应用程序并打开它才能正确显示它们。这是代码:
import SwiftUI
struct ContentView: View {
@FetchRequest(
entity: ProgrammingLanguage.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \ProgrammingLanguage.id, ascending: true)
]
) var languages: FetchedResults<ProgrammingLanguage>
@Environment(\.managedObjectContext) var managedObjectContext
var body: some View {
NavigationView {
VStack {
List(languages, id: \.self) { language in
Text(language.name ?? "Unknown")
}
}
}
.onAppear{
for i in 1...5 {
let language = ProgrammingLanguage(context: self.managedObjectContext)
language.name = "\(i) SwiftUI"
language.creator = "Some text"
do {
try self.managedObjectContext.save()
} catch {
}
}
}
}
}
如何让它在创建后自动排序?同样,当第一次创建时,屏幕的一部分显示为空白,这似乎是因为 UI 不知道 Core Data 的变化。
【问题讨论】:
-
需要有关操作的更多详细信息。
-
感谢您的浏览,我更新了帖子@Asperi
-
不,排序是正确的。我需要按 id 对其进行排序,因此当它们被创建 1、2、...时,它们会遵循该顺序 @Asperi 你能告诉我一个简单的例子,我可以在创建时创建和排序这种数据吗?
-
@Asperi 我将代码更新为可能复制正在发生的事情的最简单示例