core-data - 获取 entity.attribute == @"somevalue"的请求

标签 core-data attributes nspredicate nsfetchrequest

如何设置获取请求以仅从具有一个特定值的实体属性中提取数据?这是我之前使用过的基本代码。

-(void)fetchResults
{
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:self.entityDescription.name];
    NSString *cacheName = [self.entityDescription.name stringByAppendingString:@"Cache"];

    // predicate code
    if (self.predicate != nil) {
        [fetchRequest setPredicate:self.predicate];
    }
    // end of predicate code

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:cacheName];

    BOOL success;
    NSError *error;
    success = [self.fetchedResultsController performFetch:&error];
    if (!success)
    {
        NSLog(@"%@", [error localizedDescription]);
    }
}

我一直在看这个页面:http://bit.ly/KevYwR这是正确的方向吗?

我是否需要使用 NSPredicate或者我可以没有?

感谢您的帮助,指出正确的方向等。

最佳答案

设置 NSFetchRequest相当于 SQL 语言中的 SELECT 语句。

这里有一个简单的例子:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

数组 results包含 sqlite 文件中包含的所有托管对象。如果您想获取特定对象(或更多对象),您需要对该请求使用谓词。例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute == %@", @"Some Value"];
[request setPredicate:predicate]; 

在这种情况下 results包含属性等于 Some Value 的对象.设置谓词等于将 WHERE 子句放在 SQL 语句中。

备注

我想实体的名字是 EntityName它的属性叫做 attribute这是字符串类型。

有关更多信息,我建议您阅读 Core Data 编程指南和 NSFecthRequest类引用。
  • http://developer.apple.com/library/iOS/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html
  • https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/NSFetchRequest.html

  • 希望能帮助到你。

    关于core-data - 获取 entity.attribute == @"somevalue"的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612955/

    相关文章:

    ios - 核心数据 : fetch result from two entities, 和结果包含两个实体中的信息

    c# - XmlRootAttribute 是否可继承?

    c# - 如何在部分类的另一半中定义的属性上使用属性?

    ios - NSPredicate 用于包含内部数组的字典数组

    iphone - 检测 NSString 中的电话号码

    ios - CoreData导入重载内存

    ios - 无法实例化 NSManagedObject 的子类

    Javascript 替换图像源

    ios - 使用 NSPredicate 搜索 - 全名

    xcode - 如何在Xcode 4.0中为核心数据属性设置默认值?