gpt4 book ai didi

swift - Core Data 将数据添加到 Swift 中的关系

转载 作者:可可西里 更新时间:2023-11-01 02:17:01 26 4
gpt4 key购买 nike

我正在尝试通过核心数据关系将这个系列实例添加到一个国家/地区。唯一的问题是我的 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)")
}
}
}
}

最佳答案

您无需执行以下任何操作:

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

因为托管对象有为你做这件事的修改器:

currentCountry.addSeriesObject(serie)

Is it possible to do this without loading the whole NSOrderdSet associated with that specific country?

是的,这正是您使用提供的访问器时会发生的情况。顺便说一句,如果你有一组对象要添加,你可以一次完成:

currentCountry.addSeries(someSetOfSeries)

关于swift - Core Data 将数据添加到 Swift 中的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com