क्यों करते हैं हम की जरूरत है फोन करने के लिए संदर्भ.को नष्ट करने के लिए एक आइटम को हटाने से NSManagedObject सरणी?

0

सवाल

लगता है कि मैं है;

var itemArray = [Item]()

और आइटम एक NSManagedObject. मद दो गुण "शीर्षक":स्ट्रिंग और "किया":बूलियन. यहाँ की तस्वीर है मेरे डेटा मॉडल.

enter image description here

//  Item+CoreDataClass.swift

//  This file was automatically generated and should not be edited.
//

 import Foundation
 import CoreData

 public class Item: NSManagedObject {

 }

जब मैं के मूल्य में परिवर्तन किया और कॉल के संदर्भ में.बचाने के लिए, यह स्वचालित रूप से परिलक्षित करने के लिए लगातार कंटेनर. हालांकि, जब मैं दूर से एक तत्व सरणी कह रही द्वारा,

itemArray.remove(at: someindex)

और कॉल के संदर्भ में.बचाने के लिए. आइटम नहीं हटाया जाता है से लगातार कंटेनर. तभी मैंने कहा जाता है,

context.delete(itemArray[someindex])

फिर आइटम है सही मायने में से हटा दिया है, की दुकान है ।

तो क्यों केवल से हटाने itemArray और बचाने के लिए संदर्भ के लिए पर्याप्त नहीं है, हालांकि एक विशेषता को बदलने' मूल्य और बचाने के लिए संदर्भ के लिए पर्याप्त है सफल CRUD आपरेशन पर कोर डेटा?

core-data ios swift
2021-11-23 12:52:23
3

सबसे अच्छा जवाब

1

जब आप एक विशेषता पर एक आइटम वस्तु तो कोर डेटा (वास्तव में NSManagedObjectContext) का पता लगाता है के बाद से इस मद के अंतर्गत आता है NSManagedObjectContext और आइटम के रूप में चिह्नित है । लेकिन अपने सरणी से कोई संबंध नहीं है NSManagedObjectContext में किसी भी तरह से आप किसी भी परिवर्तन बनाने के लिए यह करने के लिए नहीं चल पाता रहता है द्वारा NSManagedObjectContext और है कि क्यों आप की जरूरत है यह बताने के लिए स्पष्ट रूप से है कि आप को नष्ट करना चाहते हैं आइटम से हटा दिया सरणी.

एक अन्य तरीका है इसे देखो करने के लिए है कि कुछ भी आप/बनाने को परिभाषित करने में अपने मूल डेटा मॉडल से जाना जाता है NSManagedObjectContext लेकिन कुछ भी बाहर बनाया में स्विफ्ट कोड अज्ञात है । यदि आप के साथ काम शुरू करने के लिए-कई रिश्तों संस्थाओं के बीच आप देखेंगे कि फिर जोड़ने या हटाने से वस्तुओं के लिए-कई संग्रह नियंत्रित किया जाएगा द्वारा सीधे NSManagedObjectContext में एक तरह से आप की उम्मीद के लिए अपने सरणी.

2021-11-24 12:13:31
1

सरणी var itemArray = [Item]() कोई सीधा संबंध के साथ अंतर्निहित डेटाबेस. इसलिए आइटम को हटाने से है कि सरणी को प्रभावित नहीं करता है, कोर डेटा के एक डेटाबेस है ।

बनाने के लिए, बचाने के लिए या हटाना NSManagedObject उदाहरणों में एक कोर डेटा डेटाबेस आप की जरूरत है कॉल करने के लिए से संबंधित कार्यों की एक मान्य NSManagedObjectContext.

2021-11-23 13:15:17
1

किसी भी आपरेशन पर CoreData माध्यम से किया जाना चाहिए NSManagedObjectContext यह है के रूप में स्क्रैचपैड का उपयोग करने के लिए अद्यतन करें या किसी भी संस्था में डेटाबेस. तो आपके मामले में है, जबकि हटाने के Item इकाई है, आप क्या करना चाहिए कि के माध्यम से संदर्भ के लिए ही दिखाई देता हो पर डेटाबेस.

var itemArray = [Item]()
let context = //get your context
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Item")
let predicate = NSPredicate(format: " (primaryKey == %@) ", "your_primary_key")
fetchRequest.predicate = predicate
itemArray = try! context.fetch(fetchRequest)
for i in 0 ..< itemArray.count where i < itemArray.count-1 {
    context.delete(itemArray[i])
}

do {
    try context.save()
} catch {
    // print the error
}
2021-11-23 14:54:08

मैं सोच रहा हूँ क्यों के बारे में अद्यतन सीधे फोन पर परिलक्षित CoreData का आधार है ।
Akif

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में