[Xcode12.4Catalina10.15.6,MacOS 를 사용하여 프로젝트 SwiftUI 및 CoreData]
에서 일하고 있어요를 표시하는 응용 프로그램 일부 데이터가있다. 비즈니스 로직의 응용 프로그램,그리고 지금 나에 관심을 돌리게 되었 UI.
하기 위해 최대 깔끔한 UI,I 을 얻고 싶 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 entity(으로 몇 천 항목)을 가지고 각각의 여러 가지 특성을 포함하는 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
으로 미리보기에 있습니다.
이렇게 하려면 어떻게 해야 합니까?
(사전에 감사합니다.)