2015-03-30 4 views
-2

Я создал приложение, которое выглядит как профиль пользователя, его локальное приложение, я могу добавить фотографию, изменить статус, добавить друзей, также я могу найти, добавить и удалить пользователей. Все это на одном экране (это не приложение для appStore это мой тестовый проект). Итак, у меня есть проблема с реализацией списка друзей. Я хочу добавить user2 друзьям user1, а затем сменить профиль на user2 и посмотреть user1 в своих друзьях. Я могу сделать это с помощью NSMutableArray чего-то подобного, но моя цель - связать эти пользователи друг с другом. Итак, я удаляю одного из этих пользователей, его пользователь должен быть удален из друзей других пользователей. Как мне это сделать?Связанные объекты в Objective-C

Мой код: класс DataSource отвечают за управление данными

- (BOOL)makeFriendshipUser1:(NSString *)name1 user2:(NSString *)name2 

BOOL success = NO; 

User *user1 = [self lookupUser:name1]; 
User *user2 = [self lookupUser:name2]; 

if (user1 && user2) 
{ 
    success = YES; 
    [user1.friendList addObject:user2.name]; 
    [user2.friendList addObject:user1.name]; 
} 

return success; 
} 



    - (void)deleteUser:(User *)user 
{ 
if ([self haveUserWithName:user.name]) 
{ 
    [self.activeUsers removeObject:user]; 
    for (User *u in self.activeUsers) 
    { 
     for (NSString *s in u.friendList) 
     { 
      if ([s isEqualToString:user.name]) 
      { 
       [u.friendList removeObject:s]; 
      } 
     } 
    } 
} 
} 

.m Пользователь

@implementation User 

- (NSMutableArray *)friendList 
{ 
if (!_friendList) 
    _friendList = [[NSMutableArray alloc]init]; 
return _friendList; 
} 

- (NSString *)friends 
{ 
NSMutableString *a = [NSMutableString string]; 
for (NSString *s in self.friendList) 
    { 
     [a appendString:s]; 
     [a appendString:@"\n"]; 
    } 
return [a copy];; 
} 
+1

Что вы попробовали? Какой код вы написали? Покажите нам свои усилия! – lodo

+0

lodo, я обновил свой пост, мои решения отлично работают, но я ищу что-то лучшее –

ответ

0

Один общий подход заключается в использовании Core Data. См. Раздел Отношения раздел Deleting a Managed Object in the Core Data Programming Guide. В нем описывается, как вы можете распространять удаление объектов через отношения, задавая разные правила.

Другой подход заключается в использовании пользовательских подклассов NSObject. Если вы создаете свои собственные объекты, вы можете управлять большинством отношений, правильно настроив свойства на weak и strong. Вы также можете указать пользовательскую логику удаления, как правило, путем переопределения сеттера. Вы можете использовать NSCoding для записи этих объектов на диск.

Смежные вопросы