Основные данные, добавляющие данные в отношения в Swift

Я пытаюсь добавить этот экземпляр серии в страну через отношение основных данных. Единственная проблема состоит в том, что мой NSOrderedSet становится очень большим, и этот метод добавления становится неэффективным, потому что я должен загрузить весь NSOrderedSet, который уже существует (путь к большому) в память. Затем скопируйте его в редактируемую копию, добавьте новый экземпляр. Затем установите большой NSOrderedSet новый OrderdSet для этой страны и сохраните его. (Это, кстати, простое решение, которое я нашел в интернете)

Можно ли сделать это без загрузки всего набора 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)
Другие вопросы по тегам