сделать уникальный атрибут - PullRequest
0 голосов
/ 20 мая 2011

У меня проблема с созданием уникальных атрибутов!

Я уже искал здесь методы, которые вы, ребята, делаете атрибуты уникальными в программировании XCode:

1: using if(![ARRAY containsObject:object]) ...

2: fetch Array with object and then if ([object count]>0) ... 

Моя ситуация:

У меня есть объект с именем userAccounts , который содержит 2 атрибута: userName & passWord .

У меня есть ArrayController , который привязан к managedObjectContext и установлен в Entity userAccounts

У меня есть 2 текстовых поля с именами userNameTF и passwordTF ивсе, что я хочу, это найти, если userNameTF строковое значение добавлено до UserAccounts или нет (уникальность предлагает).

проблема:
1NSArrayController не поддерживает метод containsObject
2. Я не могу загрузить атрибуты userName в массив, чтобы использовать его для метода containsObject

Что мне делать, чтобы решить эту проблему?

Большое спасибо заранее

1 Ответ

0 голосов
/ 20 мая 2011

Вы можете получить массив, содержащий значение свойства userName во всех объектах контроллера массива, используя arrangedObjects и valueForKey::

NSArray *userNames = [[arrayController arrangedObjects] valueForKey:@"userName"];
if([userNames containsObject:@"theNewUsername"]) {
    // user name taken
} else {
    // user name available
}

Вы также можете использовать indexOfObjectPassingTest:, если хотите найти объект, который уже имеет имя пользователя:

NSArray *objects = [arrayController arrangedObjects];
NSUInteger index = [objects indexOfObjectPassingTest:^(id object, NSUInteger index, BOOL *stop) {
    if([[object valueForKey:@"userName"] isEqualToString:@"theNewUsername"]) {
        *stop = YES;
        return YES;
    }
    return NO;
}];
if(index == NSNotFound) {
    // user name available
} else {
    // user name taken by the object at "index" within "objects"
}
...