【问题标题】:coredata issue fetching datacoredata 问题获取数据
【发布时间】:2017-12-21 16:48:05
【问题描述】:

我只从 coredata 获得最后一条记录?下面是我的代码。

NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).persistentContainer.viewContext;

NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"Company"
                                                        inManagedObjectContext:context];
[object setValue:@"infosys" forKey:@"cname"];
[object setValue:@"01" forKey:@"compID"];
[object setValue:@"Pune" forKey:@"locaation"];

[object setValue:@"wipro" forKey:@"cname"];
[object setValue:@"02" forKey:@"compID"];
[object setValue:@"Mumbai" forKey:@"locaation"];

NSError *error;
if (![context save:&error]) {
    NSLog(@"Failed to save - error: %@", [error localizedDescription]);
}

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

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Company" inManagedObjectContext:context];
[fetchRequest setEntity:entity];


NSArray *result = [context executeFetchRequest:fetchRequest error:&error];

if (result.count<=0) {

    NSLog(@"No User Found");          
}
else{

    NSString *cname;        
    NSString *compID;   
    NSString *locaation;

    for (NSManagedObject  *obj in result) {

        cname=[obj valueForKey:@"cname"];
        compID=[obj valueForKey:@"compID"];
        locaation=[obj valueForKey:@"locaation"];


    }

    NSLog(@"Store Data = %@",[NSString stringWithFormat:@"%@ %@ %@",cname,compID,locaation]);        

}

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

    像这样添加对象,

    NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:context];
    [object setValue:@"infosys" forKey:@"cname"];
    [object setValue:@"01" forKey:@"compID"];
    [object setValue:@"Pune" forKey:@"locaation"];
    
    
    NSManagedObject *object2 = [NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:context];
    
    [object2 setValue:@"wipro" forKey:@"cname"];
    [object2 setValue:@"02" forKey:@"compID"];
    [object2 setValue:@"Mumbai" forKey:@"locaation"];
    
    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Failed to save - error: %@", [error localizedDescription]);
    }
    
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Company" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    
    
    NSArray *result = [context executeFetchRequest:fetchRequest error:&error];
    
    if (result.count<=0) {
    
        NSLog(@"No User Found");
    
    }
    else{
    
        NSString *cname;
        NSString *compID;
        NSString *locaation;
    
        for (NSManagedObject  *obj in result) {
    
            cname=[obj valueForKey:@"cname"];
            compID=[obj valueForKey:@"compID"];
            locaation=[obj valueForKey:@"locaation"];
    
            NSLog(@"Store Data = %@",[NSString stringWithFormat:@"%@ %@ %@",cname,compID,locaation]);
        }
    
    
    
    }
    

    【讨论】:

    • 我想将 emp 存储为一个对象,并将 cname、compID 和 location 与那里的属性一起存储并获取一个 emp obj
    • @PrashantBorade 首先,您需要为公司创建一个表,另一个员工表和员工表将与公司表相关,简而言之,您需要为此创建关系数据库教程code.tutsplus.com/tutorials/…
    • @PrashantBorade 在这里你的错误是你我们用不同的值更新现有对象,所以你只得到最后更新的值而不是两者
    • 每次运行项目时,数据都会被保存并一一递增。
    • 是的,因为每次运行项目时,您都在使用上述代码创建新对象,这就是它会不断增加的原因,所以首先我建议您在 ios 目标 c 中了解一些核心数据的基础知识
    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多