2016-12-08 10 views
0

対insertNewObject間のどのような違い私は問題には2つの解決策を発見した::指定イニシャライザ

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のメソッドは "Factory"メソッドで、Objective-C(Swiftの前に存在していたメソッド)ではそれほど頻繁に表示されません。しかし、最終的な結果は、指定されたイニシャライザの使用と同じです。ファクトリメソッドのコードは利用できませんが、ある時点で指定された初期化子を呼び出すと仮定できます。

関連する問題