[Xcode 12.4,Catalina 10.15.6,MacOS โครงการใช้ SwiftUI และ CoreData]
ฉันทำงานเป็นแอพที่จะแสดงข้อมูลบางอย่างที่ฉันมีแล้ว ธุรกิจตรรกะของแอพทำงานดีและตอนนี้ฉันเปลี่ยนของความสนใจส่วนติดต่อผู้ใช้ขอ.
เพื่อช่วยเก็บข้าวของให้คนส่วนติดต่อผู้ใช้ขอฉันอยากได้ PreviewProvider
ทำงานสำหรับแต่ละมุมมอง ฉันจะยังเหมือนการแสดงตัวอย่างเพื่อให้แสดงข้อมูลของฉันแล้วต้องอยู่ใน CoreData datastore.
หลังจากความผมในที่สุดก็ต้องการจะแสดงตัวอย่างต้อง compile และแสดงอย่างไรก็ตามฉันไม่เห็นแท้จริงข้อมูลในส่วนแสดงตัวอย่าง. ดูเหมือนว่าระหว่างที่ค NSManagedObjectContext คือมีพื้นที่แสดงภาพตัวอย่างไม่มีที่เลือกมีรายการที่แสดงผล
จะให้ฉันเลือกที่ 3 อยู่ในรายการของฉัน datastore จะถูกแสดงในตัวอย่าง?
ด้านล่างของฉันคือรหัสสำหรับมุมมอนั่นรวมถึงการค 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
คือการอ้างอิงไปที่ struct แสดงทางด้านล่างนี้
เพื่อให้ได้เป็นในรูปของไฟฟ้าสถิตย์ NSManagedObjectContext อย่างที่ต้องการ PreviewProvider ฉันต้องการเพิ่มคลังตาม struct ของโครงการเป็นส่วนหนึ่ง 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
ไปแสดงตัวอย่าง.
ยังไงฉันทำไอ้นี่ได้ไหม?
(ขอบคุณล่วงหน้าสำหรับความสนใจของคุณ.)