【问题标题】:iphone sdk - Core Data : about predicate, entity etciphone sdk - 核心数据:关于谓词、实体等
【发布时间】:2011-04-24 14:49:09
【问题描述】:

我在 iphone 中使用包含核心数据的数据库。我只想通过搜索获得一列信息.. 我的示例代码是;

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Groups : NSManagedObject {
   @private
}
@property (nonatomic, retain) NSString * GroupID;
@property (nonatomic, retain) NSString * userID;
@property (nonatomic, retain) NSString * memberID;
@property (nonatomic, retain) NSString * memberNAME;
@property (nonatomic, retain) NSString * memberLNAME;
@property (nonatomic, retain) NSString * memberNUMBER;
@property (nonatomic, retain) NSString * memberBIRTH;
@property (nonatomic, retain) NSString * memberMARRIAGE;

@end


-(void)GetDataFromDB{


        app = (CepostaAppDelegate*)[[UIApplication sharedApplication] delegate];

        root = (RootViewController*)
                   ([app.navigationController.viewControllers objectAtIndex:0]);

        NSFetchRequest *request = [[NSFetchRequest alloc] init];

        NSEntityDescription *entity = [NSEntityDescription 
                  entityForName:@"Groups"
                  inManagedObjectContext:app.managedObjectContext];


        NSPredicate *predicate = [NSPredicate 
                  predicateWithFormat:@"(GroupID IN %@)",SendGrupList];

        [request setEntity:entity];
        [request setPredicate:predicate];

        NSError *error; 
        NSMutableArray *TempArr = [[NSMutableArray alloc] initWithArray:
            [app.managedObjectContext executeFetchRequest:request error:&error]];

        [request release];

        for (gObje in TempArr) { //gObje is Groups's Object
            NSString *GroupsMemNum = [[NSString alloc] 
                                    initWithString:gObje.memberNUMBER];
            [gGonder.TeLList addObject:GroupsMemNum];
            NSLog(@"%@",GroupsMemNum);
            [GroupsMemNum release];
        }  
}

我在 SendGrupList 中使用谓词进行搜索(它具有组 ID),但 TempArr 返回 db 中的所有数据,我怎样才能只获取一列信息?

【问题讨论】:

    标签: iphone core-data predicate


    【解决方案1】:

    你将不得不使用像这样的参考

    (refGroupTableName.groupId IN %@"),SendGrupList
    

    【讨论】:

      【解决方案2】:

      你的SendGrupList 是什么?如果它是一个数组,它应该可以工作。 这是一个工作示例,其中SendGrupListNSMutableArray

      [SendGrupList addObject:data]; 
          NSError *error = nil;
          NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
          NSPredicate *predicate = [NSPredicate 
                               predicateWithFormat:@"GroupID IN %@",SendGrupList];
      
          [fetchRequest setPredicate:predicate];
      
          NSEntityDescription *entity = [NSEntityDescription 
                                         entityForName:@"Groups"
                                      inManagedObjectContext:managedObjectContext];
          [fetchRequest setEntity:entity];
          NSArray *fetchedObjects = [managedObjectContext 
                                    executeFetchRequest:fetchRequest error:&error];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多