2016-12-08 3 views
0

대 insertNewObject 사이에 어떤 차이 :코어 데이터 : 나는이 문제에 대한 두 가지 솔루션을 발견 지정 초기화

public class MyClass: NSManagedObject { 
    init(_ entity:NSEntityDescription, dict: NSDictionary, context: NSManagedObjectContext) { 
     super.init(entity: entity , insertInto: context) 
    } 
} 

let entity = NSEntityDescription.entity(forEntityName: "MyClass", in: self.context!) 
_ = MyClass.init(entity!, dict: item as! NSDictionary, context: self.context!) 

let myClass = NSEntityDescription.insertNewObject(forEntityName: "MyClass", into: context) as! MyClass 

는하지만 말의 차이를 이해할 수 없습니다. 그리고 그것은 어떻게 NSManagedObjectContext에 영향을 줍니까?

+0

첫 번째 버전에 대해서는 알지 못했지만, 3 단계로 나왔습니다. let createe = MyClass (context : context). 엔티티 이름을 알 필요가 없습니다. – shallowThought

답변

1

동일한 효과가 있습니다. NSEntityDescription의 메서드는 "공장"메서드이며, Objective-C (Swift가 수행하기 전에 존재했던 메서드)에서는 너무 자주 볼 수 없습니다. 그러나 최종 결과는 지정된 이니셜 라이저를 사용하는 것과 같습니다. 팩토리 메서드의 코드는 사용할 수 없지만 어느 시점에서 지정된 초기화 프로그램을 호출한다고 가정 할 수 있습니다.