2016-05-02 4 views
2

このセリエースのインスタンスをコアデータ関係を介して国に追加しようとしています。唯一の問題は、私のNSOrderedSetが非常に大きくなり、NSOrderedSetthat全体を既にメモリにロードしなければならないため、この追加方法が非効率的になることです。編集可能なコピーにそれを複製し、新しいインスタンスを追加します。大きなNSOrderedSetを設定すると、その国の新しいOrderdSetを設定して保存します。 (これは私がインターネット上で見つけた簡単な解決策です)コアSwiftで関係にデータを追加するデータ

特定の国に関連するNSOrderdSet全体をロードせずにこれを行うことはできますか?したがって、完全なリストをロードせずに新しいインスタンスを追加するだけですか?

私の曖昧な説明には申し訳ありません。私はCore-Dataの概念を初めて学んでいます。

for data in rawData { 
         //Setup let 
         let seriesName = data.1.array![1].string! 

         if let seriesID = Int(data.1.array![0].string!){ 
          if let itemCount = Int(data.1.array![2].string!){ 
           privateMOC.performBlockAndWait{ 
            let serie = NSEntityDescription.insertNewObjectForEntityForName("Series", inManagedObjectContext: privateMOC) as! Series 
            serie.seriesID = seriesID 
            serie.seriesName = seriesName 
            serie.itemCount = itemCount 

            let series = currentCountry.series!.mutableCopy() as! NSMutableOrderedSet 
            series.addObject(serie) 
            currentCountry.series = series.copy() as? NSOrderedSet 
            do { 
             try privateMOC.save() 
            } catch let error as NSError { 
             print("Could not save \(error), \(error.userInfo)") 
            } 
           } 
          } 
         } 

答えて

1

あなたはこののいずれかを実行する必要はありません。

let series = currentCountry.series!.mutableCopy() as! NSMutableOrderedSet 
series.addObject(serie) 
currentCountry.series = series.copy() as? NSOrderedSet 

管理対象オブジェクトは、あなたのためにそれを行うミューテータを持っているので:

currentCountry.addSeriesObject(serie) 

を行うことが可能です特定の国に関連するNSOrderdSet全体をロードせずに

はい、これは、指定されたアクセサーを使用する場合に起こります。

currentCountry.addSeries(someSetOfSeries) 
+0

私はコアデータに新たなんだと私はあなたの答えの最後に与えたあなたの提案を使用する:あなたが追加するオブジェクトのセットを持っている場合はところで、あなたはすべてを一度に行うことができます。それをコード化する方法?私が試したことはすべてうまくいかなかった。 – sloeberGJ