Скопируйте массив объектов NSManagedObject в Swift 4 - PullRequest
0 голосов
/ 01 мая 2019

У меня есть массив 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];

1 Ответ

1 голос
/ 01 мая 2019

Чтобы перевести этот код 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

Работает ли это полностью (Objective-C или Swift) с NSManagedObject или нет - это другой вопрос. См. Как мне продублировать или скопировать Базовый управляемый объект данных? и его Swift отвечает за код, специально предназначенный для создания глубоких копий NSManagedObject экземпляров.

...