0

我的应用程序中有一个核心数据。实体之一是DetailsDetails有 2 个名为的属性guid,另一个是details. 这两个属性都包含很多值。在获取时,我必须采取details相应的guid. 我可以使用 guid 获取保存在其他属性中的值吗?如何连接这两个属性?这就是我将值保存到 2 个属性的方式。

ReaderAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSManagedObject *object;
object = [NSEntityDescription insertNewObjectForEntityForName:@"Details" inManagedObjectContext:context];

[object setValue: [[activity objectForKey:@"category_guid"]stringValue]forKey:@"guid"];
[object setValue:[activity objectForKey:@"details"] forKey:@"details"];

NSError *error;            
if (![context save:&error]) {

    NSLog(@"Error save base");
}
else {

    NSLog(@"saved");                
}
4

1 回答 1

1

我不确定我是否理解您的问题,但如果您想Details根据 a 选择特定对象,您可以使用以下内容guid创建 a :NSFetchRequestNSPredicate

NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Details" inManagedObjectContext:moc]];
[request setPredicate:[NSPredicate predicateWithFormat:@"guid == %@", yourGuid]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
if([results count] > 0) {

    // the object you are looking for
    NSManagedObject* grabbedDetail = [results objectAtIndex:0];

    NSString* grabbedDetails = [grabbedDetail valueForKey:@"details"];

    // here you have grabbed details attribute
    // I suppose it's of type NSSString... 
}

// [request release]; if you don't use ARC

现在关于你的问题,你能试着解释一下这些是什么意思吗?

我可以使用 guid 获取保存在其他属性中的值吗?如何连接这两个属性?

希望有帮助。

编辑:

如果results为零,您可以首先检索没有谓词的对象。因此,请执行以下操作:

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

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
if([results count] > 0) {

    for(NSManagedObject* obj in results) {

        NSLog(@"obj -> %@", obj)
    }
}

// [request release]; if you don't use ARC

如果您没有日志,则意味着您没有数据!相反,使用硬编码guid值设置谓词,例如:

[request setPredicate:[NSPredicate predicateWithFormat:@"guid == %@", @"12345"]];

您需要确保guid存在。

我不知道问题是什么,但我使用的查询是正确的,没有详细信息,我无法理解发生了什么。

干杯。

于 2012-09-28T08:18:45.080 回答