[Xcode 12.4, Catalina 10.15.6, MacOS परियोजना का उपयोग कर SwiftUI और CoreData]
मैं काम कर रहा हूँ एक app पर प्रदर्शित करने के लिए कुछ डेटा है । व्यापार तर्क के अनुप्रयोग ठीक काम कर रहा है, और अब मैं के लिए मेरा ध्यान दिया यूआई ।
आदेश में साफ करने के लिए यूआई, मैं होगा की तरह पाने के लिए PreviewProvider
काम के प्रत्येक दृश्य के लिए. मैं भी तरह का पूर्वावलोकन डेटा प्रदर्शित करने के लिए मैं पहले से ही है में CoreData datastore.
बहुत बाद हताशा में, मैं अंत में प्रबंधित करने के लिए पूर्वावलोकन प्राप्त करने के लिए संकलन और प्रदर्शन, हालांकि मैं नहीं देख रहा हूँ किसी भी वास्तविक डेटा पूर्वावलोकन में. यह प्रतीत होता है कि whilst 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
पूर्वावलोकन में.
मैं ऐसा कैसे कर सकता?
(अग्रिम में धन्यवाद आपका ध्यान के लिए.)