条件获取

发布于 2024-11-09 21:57:18 字数 922 浏览 0 评论 0原文

我在获取具有特定条件的行时遇到问题。

我有一个名为 UserAccounts 的实体,它包含四个属性:userNamepassWorduserFullNameuserLevel

为了登录,我必须获得与 userName 匹配的 passWord。为此,我有两个文本字段:userNameTFpassWordTF。 我必须获取包含与 userNameTF.stringValue 匹配的实体的行(我正在使用 SQL 来比较我的请求),然后检查 passWord 属性是否等于 <代码>passWordTF.stringValue。

现在,我可以使用以下方法分别从核心数据存储中获取 userNamepassWord 数组:

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

但这两个数组彼此没有关系,我无法比较密码与输入的用户名。

我之前在 VisualStudio 中使用 SQL 完成此操作: select "password" from userAccounts where userName = @"username" 然后将结果与输入的密码进行比较,但我找不到获取方法具有实体的行,用其属性执行某些操作。

I am having trouble fetching a row with specific conditions.

I have an Entity called UserAccounts that it contains four attributes: userName, passWord, userFullName, userLevel.

For login, I have to get a passWord that matches the userName. To do this I have two text fields, userNameTF and passWordTF.
I have to fetch a row with an entity (I am using SQL to compare my request) that matches the userNameTF.stringValue and then check if the passWord attribute is equal to passWordTF.stringValue.

Right now I can take arrays of userName and passWord from my Core Data store separately using:

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

but these two arrays have no relation to each other, and I can't compare the password with entered username.

I done this before by SQL in VisualStudio using: select "password" from userAccounts where userName = @"username" and then comparing the result with the entered password, but I can't find a way to fetch a row with an entity, to do something with its attributes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吹梦到西洲 2024-11-16 21:57:18

请记住,Core Data 是一个对象图持久性库; SQL 是从您那里抽象出来的,用 SQL 术语思考通常只会导致混乱。

为了解决这个问题,您需要使用指定用户名的谓词创建一个提取请求。如果用户存在,它将返回一个包含一个用户对象的数组(假设此处名称是唯一的)。然后您所要做的就是将您的密码字符串与用户管理对象上的密码属性进行比较,以检查它们是否相同。

Remember that Core Data is an object graph persistence library; SQL is abstracted away from you, and thinking in SQL terms will often just lead to confusion.

To solve this problem, you want to create a fetch request using a predicate that specifies the user name. If the user exists, it will return an array with one user object (assuming here that names are unique). Then all you have to do is compare your password string with the password property on your user managed object to check if they're the same or not.

随梦而飞# 2024-11-16 21:57:18

好吧,我终于找到了再次解决我的问题的方法!

使用此代码,我可以检索有关一个特定属性值的实体记录的整个属性。

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

因此,我可以找到与用户在 userNameTF 文本字段中输入的 userName 相关的 passWord

无论如何,这是我解决问题的方法,我认为还有更多的解决方案。

谢谢大家。

Well, Finally I found a way solving my problem AGAIN !

Using this code I can retrieve whole attributes of an Entity's record regarding one specific attribute's value.

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

So I can find the passWord related to userName that user typed in the userNameTF textfield !

Anyway, this is my way to solve the problem and I think there is more solutions out there.

Thank you all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文