[低12.4、卡塔利娜10.15.6,mac os项目使用SwiftUI和CoreData]
我工作上的一个应用程序,以显示一些数据我所拥有的。 商业逻辑的程序是工作的罚款,而现在我已经把我的注意。
为了收拾,我想得到的 PreviewProvider
工作的每个图。 我也喜欢的预览显示的数据,我已经在CoreData数据存储库。
经过多挫折,我终于得到的预览的汇编和显示器,但是我没有看到任何实际数据在预览。 它的出现,而NSManagedObjectContext是存在的,预览中没有选择任何输入到显示。
我怎么能选择,说第3条目的,在我的数据存储库,以显示在预览?
下面是我的代码的视,包括 PreviewProvider
在结束(作为正常的)的一些意见解释如下。
import SwiftUI
struct DomainRow: View {
@Environment(\.managedObjectContext) var context
@ObservedObject var domain : DomainFiles
private var id : LocalizedStringKey {
get {
return LocalizedStringKey(String(Int(domain.id)))
}
}
var body: some View {
HStack (alignment: .center) {
Text(id)
Spacer()
VStack(alignment: .leading) {
Text(domain.name!)
.fontWeight(.bold)
.truncationMode(.tail)
.frame(minWidth: 20)
Text(domain.path!)
.font(.caption)
.opacity(0.625)
.truncationMode(.middle)
}
}
.padding(.vertical, 4)
}
}
#if DEBUG
struct DomainRow_Previews: PreviewProvider {
@Environment(\.managedObjectContext) var managedObjectContext
static var previews: some View {
let context = CoreDataStack.context
let domain = DomainFiles(context: context)
return DomainRow(domain: domain)
.environment(\.managedObjectContext, CoreDataStack.context)
}
}
#endif
DomainFiles
是CoreData实体(与几千个条目),其中有几个属性,包括 id
, name
, path
(到的文件)。 CoreDataStack.context
是一个参考的结构如下所示。
为了得到一个静态NSManagedObjectContext,如需要通过PreviewProvider,我已经加入以下结构到我的项目,因为每 https://developer.apple.com/forums/thread/650269
import Foundation
import CoreData
struct CoreDataStack {
static var context: NSManagedObjectContext {
return persistentContainer.viewContext
}
static let containerName: String = "MyAppsDataStore"
static var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: containerName)
container.loadPersistentStores { (description, error) in
if let error = error {
print(error)
}
}
return container
}()
// Don't need to save anything in the preview.
// func saveContext() { ... }
}
我会的,例如,通过在项 domain.id == 3
成的预览。
我怎么可以这样做?
(在此先感谢您的关注。)