我有一个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];

最佳答案

要将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 answers,以获取专门涵盖深入复制NSManagedObject实例的代码。

10-08 05:51