왜 우리는 전화가 필요하다.삭제에서 항목을 삭제하려면 NSManagedObject 배열?

0

질문

한 두 가지가 아닌;

var itemArray = [Item]()

과목은 NSManagedObject. 항목은 두 가지 특성"Title":문자열"Done":Boolean. 여기에서의 데이터 모델을 제공합니다.

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 지만 아무것도 만들어 외부에서 swift code 알 수 없습니다. 만약 당신이 작업을 시작하는 많은 엔터티 간의 관계 당신이 볼 수 있는 다음 추가 또는 개체를 제거에서 많은 컬렉션을 처리하는 것에 의해 직접 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ý
..................................................................................................................