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). Но конечный результат такой же, как при использовании назначенного инициализатора. Хотя код фабричного метода недоступен, вы можете предположить, что он вызывает определенный инициализатор в какой-то момент.

 Смежные вопросы

  • Нет связанных вопросов^_^