Objective c 将RLMArray与NSString进行比较
有没有办法将RLMArray与NSString进行比较 我想将textfield.text与RLMArray的存储用户名进行比较 谢谢你的帮助!:) 更新:Objective c 将RLMArray与NSString进行比较,objective-c,nsstring,realm,Objective C,Nsstring,Realm,有没有办法将RLMArray与NSString进行比较 我想将textfield.text与RLMArray的存储用户名进行比较 谢谢你的帮助!:) 更新: -(void)checkUser { RLMArray<User *> *userObjects; RLMResults *matches = [userObjects objectsWhere:@"name CONTAINS %@", _userName]; if (matches)
-(void)checkUser {
RLMArray<User *> *userObjects;
RLMResults *matches = [userObjects objectsWhere:@"name CONTAINS %@", _userName];
if (matches) {
NSLog(@"YES");
}
else {
NSLog(@"NO");
}
}
-(无效)检查用户{
RLMArray*用户对象;
RLMResults*matches=[userObjects objectsWhere:@“name CONTAINS%@”,_userName];
如果(匹配){
NSLog(@“是”);
}
否则{
NSLog(@“否”);
}
}
RLMArray是域中用于定义多个关系的容器类型
与NSArray不同,rlmarray只保存一种类型,由objectClassName
属性指定
为了进行比较,必须从RLMArray中获得一个string对象。有很多方法可以做到这一点。例如,如果要将数组的第一个对象与textfield.text
:if([[YOURARRAY firstObject]IsequalString:textfield.text]){
//做点什么
}
您还可以比较数组中的第二个对象,执行如下操作:
if([[YOURARRAY objectAtIndex:1]IsequalString:textfield.text]){
//做点什么
}
以下是realm的文档:
如果您有
用户
对象的RLMArray
(因为NSString
s本身不能直接保存到RLMArray
),并且您希望查看其中是否有任何匹配UITextField
的NSString
值,通过NSPredicate
查询,您应该能够非常轻松地做到这一点:
@interface User
@property NSString *username;
@end
NSString *textFieldString = textfield.text;
RLMArray<User *> *userObjects = .../
RLMResults *matches = [userObjects objectsWhere:@"username CONTAINS '%@'", textFieldString];
@用户界面
@属性字符串*用户名;
@结束
NSString*textFieldString=textfield.text;
RLMArray*用户对象=/
RLMResults*matches=[userObjects objectsWhere:@“用户名包含“%@”,textFieldString];
有关NSPredicate
筛选的更多信息,Realm还维护一个可以使用的语法列表:
祝你好运 这是一个好的开始!但是不能将
NSString
对象直接存储在RLMArray
中。因此,表达式[array[0]isEqualToString://code>在其中比较从数组本身返回的对象时,将永远不会返回true。当然,您可以使用for循环遍历每个对象并手动比较,但简单地使用NSPredicate
查询要少得多请看我的更新。如果我完成了If。。。您的代码的else语句NSLog始终向我显示“是”。我做错了什么?是的。即使领域没有找到任何对象,它仍然会返回一个RLMResults
对象,即使它是空的。这是因为该对象是“活动”的,如果您将更多对象添加到userObjects
,它将自动更新新结果。最好测试是否(matches.count>0)
非常感谢TiM!)我的荣幸!祝你的应用程序好运!:)