所以我正在尝试为我的应用创建一个简单的(如果存在这样一个)登录过程,并且我收到了以下代码块的错误。
NSManagedObject *context = _managedObjectContext;
NSFetchRequest *request= [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:context];
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"username==%@",self.textFieldUsername.text];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error = nil;
// Below line is giving me error
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
if (array != nil) {
NSUInteger count = [array count]; // may be 0 if the object has been deleted.
NSLog(@"Username may exist, %@",count);
}
else {
NSLog(@"Username does not exist.");
}
`
现在,当用户点击“登录”按钮时,就会运行上面的代码。
Xcode给我一个错误: 'NSManagedObject'没有可见的@interface声明选择器'executeFetchRequest:error。'
当我阅读上述声明时,它似乎只是 greek 给我。我正在处理的文件的名称是 ViewControllerWelcome.m ,可以在以下link中完整查看。如果重要,我使用的是库存样板核心数据代码。
额外奖励:当我在这里发帖(SO)时,如何获得客观c代码突出显示?
答案 0 :(得分:3)
变化:
NSManagedObject *context = _managedObjectContext;
要
NSManagedObjectContext *context = _managedObjectContext;
和
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
应该是
NSArray *array = [context executeFetchRequest:request error:&error];
P.S。 如果您希望用户名搜索不区分大小写,请使用“username == [c]%@”作为谓词...