2016-05-02 3 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

Я новичок в Core Data, и я хочу использовать ваше предложение, что вы дали в конце вашего ответа. Как это кодировать? Все, что я пробовал, не работает. – sloeberGJ