【问题标题】:Copy array of NSManagedObject objects in Swift 4在 Swift 4 中复制 NSManagedObject 对象数组
【发布时间】:2019-09-20 04:21:12
【问题描述】:

我有一个 NSManagedObject's 数组,我想将它们复制到一个新数组中,以便对其进行操作,而不是在用户完成后保存更改。

数组:

var origQuestions: [Questions]?

这就是我从 CoreData 检索数据的方式:

self.origQuestions = MainDb.sharedInstance.randomQuestions(entity: "Questions", count: self.questionToShow)

这是我在 Objective-C 中需要的,但我想知道如何在 Swift 4 中这样做:

NSMutableArray *questionsCopy = [[NSMutableArray alloc] initWithArray:self.origQuestions copyItems:YES];

【问题讨论】:

  • 您能否通过显示一些您迄今为止尝试过的代码来缩小您的问题范围?
  • @Christophe 我已经编辑了我的问题。请检查。谢谢!
  • 好的。对this question 的快速回答有帮助吗?

标签: arrays swift core-data copy swift4


【解决方案1】:

要将 Objective-C 代码翻译成 Swift,您需要这样做:

var questionsCopy = NSArray(array: origQuestions, copyItems:true) as! [Questions]

但是由于您将origQuestions 声明为可选,它必须是:

var questionsCopy = origQuestions != nil ? NSArray(array: origQuestions!, copyItems:true) as? [Questions] : nil

NSManagedObject 是否完全有效(Objective-C 或 Swift)是另一个问题。请参阅 How can I duplicate, or copy a Core Data Managed Object? 及其 Swift 答案,了解专门涵盖对 NSManagedObject 实例进行深层复制的代码。

【讨论】:

  • 我实际上使用了您在回答中给出的问题的链接,发现有一种使用 Swift 4 的方法。很好的答案!谢谢。 stackoverflow.com/a/51544796/1138498
  • 出于好奇,您最初为什么要使用 Objective-C 行?您是否按照我的回答中所示翻译后在 Swift 中尝试过,结果如何?
  • 我不想要那个 Obj-C 行。我只是想展示我过去是如何在 Obj-C 中做到这一点的,但不知道如何在 Swift 中做到这一点。因为在 Swift 中,我猜你需要以不同的方式克隆数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
相关资源
最近更新 更多