Безопасно ли удалять NSManagedObject с помощью быстрого перечисления?


Вы не должны изменять коллекцию, которая повторяется с помощью быстрого перечисления, но я не совсем уверен, в какой степени это так. Приведенный ниже код не вызвал у меня никаких проблем, но я не уверен, что мне повезло. Есть ли у кого-нибудь определенный ответ?

for(NSManagedObject *myObject in myArray) {
   [myObject.managedObjectContext deleteObject:myObject];
}

Таким образом, я на самом деле не изменяю массив, но удаляю объект из контекста, что может косвенно изменить массив, но я не уверен в этом..

1 3

1 ответ:

С объектами в массиве можно делать все, что угодно, при условии, что сам массив не мутирует.

Этот код вполне приемлем.

Примечание, однако, если у вас есть много объектов для удаления, вы должны рассмотреть и другие вещи, а также (например, prefetching отношения, используя пул авторелиза, убедившись, что ваш MOC остается чистым и т.д.)