Проблемы с NSSet (удалить объект и повторить) - PullRequest
2 голосов
/ 04 июня 2010

В настоящее время я работаю над проектом, который использует CoreData, а отношения используют NSSet. У меня сейчас 2 проблемы:

  1. Как перебрать NSSet с помощью индекса? -> решено

  2. Как удалить конкретный объект? => Я думаю, мне нужно повторить и проверить объект?

хммм похоже у меня тоже проблема с добавлением объекта? Что не так с этим:

    [mySet setByAddingObject:info];

Спасибо за помощь.

MCB

1 Ответ

10 голосов
/ 04 июня 2010

Набор является неупорядоченным контейнером, что означает, что вы не можете перебрать его, используя индекс. Вы можете использовать [set allObjects] для получения массива, но имейте в виду, что при каждом выполнении кода порядок не будет согласованным. Так что вы можете отсортировать этот массив перед итерацией, в зависимости от того, что вы делаете.

Чтобы удалить объект, вы должны иметь экземпляр NSMutableSet и использовать сообщение removeObject:. Если у вас есть только NSSet и вы хотите создать новый набор с удаленным определенным элементом, вы должны использовать такой код:

NSSet *mySet = /* ... */;
NSMutableSet *mutable = [NSMutableSet setWithSet:mySet];
[mutable removeObject:myObject];
...