2016-06-01 4 views
0

私はAppDelegate.swiftで実装以下のコードを持っている:多くのコアデータエンティティに基づいてNSObjectの配列を返す方法は?

func persistentStoreEnsemble(ensemble: CDEPersistentStoreEnsemble, globalIdentifiersForManagedObjects objects: [NSManagedObject]) -> [NSObject] { 
    let entities = objects as! [Category] 
    return entities.map {$0.uniqueIdentifier} 
} 

このプロジェクトでは、コアデータを使用し、「カテゴリーは」エンティティが私のモデルを形成するものです。

問題は「カテゴリ」エンティティでのみ機能しますが、私のプロジェクトにはサブカテゴリ、アイテム、ノート、および他のエンティティとしての回復があります。では、どのようにしてそのメソッドのコードをすべてのエンティティで動作させ、受け取ったエンティティに応じて値を返すことができますか?

どうすればいいですか?

+0

なぜ、ちょうど 'objects'を返しませんか? – idmean

+0

さて、実際には、その関数はフレームワークからのものであるため、NSObjectとして配列を返すべきだと私は考えていません –

+0

しかし[NSManagedObject]( 'objects'の型)も' NSObject ] '。 'NSManagedObject'は' NSObject'から継承します。あなたは 'return objects'を実行するだけです。 – idmean

答えて

0

は、最後に私はそれがこのコードを使用して作業しました:

func persistentStoreEnsemble(ensemble: CDEPersistentStoreEnsemble, globalIdentifiersForManagedObjects objects: [NSManagedObject]) -> [NSObject] { 

    var array = [NSObject]() 

    for object in objects { 
     let value: NSObject? = object.valueForKeyPath("uniqueIdentifier") as? NSObject 
     array.append(value!) 
    } 

    return array 

} 
+0

これは、問題を解決するための動的なobj-cアプローチです。 – Wain

+0

これはかなりの型キャストを引き起こします... – vadian

関連する問題