Безопасно ли удалять NSManagedObject с помощью быстрого перечисления?
Вы не должны изменять коллекцию, которая повторяется с помощью быстрого перечисления, но я не совсем уверен, в какой степени это так. Приведенный ниже код не вызвал у меня никаких проблем, но я не уверен, что мне повезло. Есть ли у кого-нибудь определенный ответ?
for(NSManagedObject *myObject in myArray) {
[myObject.managedObjectContext deleteObject:myObject];
}
Таким образом, я на самом деле не изменяю массив, но удаляю объект из контекста, что может косвенно изменить массив, но я не уверен в этом..
1 ответ:
С объектами в массиве можно делать все, что угодно, при условии, что сам массив не мутирует.
Этот код вполне приемлем.
Примечание, однако, если у вас есть много объектов для удаления, вы должны рассмотреть и другие вещи, а также (например, prefetching отношения, используя пул авторелиза, убедившись, что ваш MOC остается чистым и т.д.)