iPhone:类似于核心数据中的“where”类型子句

时间:2012-11-08 05:24:29

标签: iphone objective-c core-data

我在我的应用程序中第一次使用核心数据来解决我的问题我已经做了很多google但是我没有找到具体的解决方案。

我有实体:SubCategory

属性:mainCategoryId,subCategoryName

现在我想获取像

这样的数据
Select subCategoryName from SubCategory where mainCategoryId=1;

我实施的代码如下:

 NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"SubCategory" inManagedObjectContext:managedObjectContext];

    [request setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SubCategoryName == %@",@"Triangular1"];
    [request setPredicate:predicate];

    NSError *error;
    arrSubCategory = [managedObjectContext executeFetchRequest:request error:&error];

如何在coredata中获取类似的数据

分享您的想法

提前完成。

2 个答案:

答案 0 :(得分:2)

根据您的问题,您需要的是什么,

[NSPredicate predicateWithFormat:@"mainCategoryId = %@",@"1"];

所以你的代码看起来像,

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
    entityForName:@"SubCategory" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"mainCategoryId = %@",@"1"];
[request setPredicate:predicate];

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
    NSLog(@"subCategoryName: %@", [info valueForKey:@"subCategoryName"]);
}

以上只是一个示例代码。根据您的要求,实际实施可能会有所不同。

关于coredata is here的教程。检查一下。

答案 1 :(得分:0)

你可以这样做

NSString *maincategoryId = @"1";
    NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"SubCategory"];
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"rubriqueid == %@", maincategoryId]];

并且在您调用NSMutableArray来放置结果之后:

NSMutableArray *answensmuarray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];