условная выборка - PullRequest
       12

условная выборка

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

У меня проблемы с получением строки с конкретными условиями.

У меня есть сущность с именем UserAccounts, которая содержит четыре атрибута: userName, passWord, userFullName, userLevel.

Для входа в систему я должен получить passWord, который соответствует userName. Для этого у меня есть два текстовых поля, userNameTF и passWordTF. Мне нужно извлечь строку с сущностью (я использую SQL для сравнения моего запроса), которая соответствует userNameTF.stringValue, а затем проверить, равен ли атрибут passWord passWordTF.stringValue.

Прямо сейчас я могу взять массивы userName и passWord из моего основного хранилища данных отдельно, используя:

NSArray *userName = [[userAccountsArray arrangedObjects] valueForKey:@"userName"];   
NSArray *passWord = [[userAccountsArray arrangedObjects] valueForKey:@"passWord"];

но эти два массива не имеют никакого отношения друг к другу, и я не могу сравнить пароль с введенным именем пользователя.

Я делал это раньше с помощью SQL в VisualStudio, используя: select "password" from userAccounts where userName = @"username", а затем сравнивал результат с введенным паролем, но я не могу найти способ извлечь строку с сущностью, чтобы что-то сделать с ее атрибутами.

Ответы [ 2 ]

0 голосов
/ 06 июня 2011

Что ж, наконец-то я нашел способ решить мою проблему СНОВА!

Используя этот код, я могу получить целые атрибуты записи сущности относительно значения одного конкретного атрибута.

NSArray *userAccounts=[userAccountsArray arrangedObjects]; 
NSArray *matchingAccounts=[userAccounts  filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"%K == %@",@"userName",userNameTF.stringValue]];
NSString *matchedPassWords=[[matchingAccounts valueForKey:@"passWord"]objectAtIndex:0];

Таким образом, я могу найти passWord , связанный с userName , который пользователь ввел в текстовое поле userNameTF!

В любом случае, это мой способ решения проблемы, и я думаю, что есть и другие решения.

Спасибо всем.

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

Помните, что Core Data - это библиотека постоянства графов объектов;SQL абстрагируется от вас, и размышления в терминах SQL часто просто приводят к путанице.

Чтобы решить эту проблему, вы хотите создать запрос на выборку, используя предикат, который задает имя пользователя.Если пользователь существует, он вернет массив с одним пользовательским объектом (при условии, что здесь имена уникальны).Затем все, что вам нужно сделать, это сравнить строку пароля со свойством пароля в управляемом пользователем объекте, чтобы проверить, совпадают они или нет.

...