3

我正在使用 foliowin 函数来获取应用程序中的所有记录

-(NSArray*)recordsInTable:(NSString*)tableName andManageObjectContext:(NSManagedObjectContext *)manageObjContext
{
    NSError *error=nil;
    // **** log objects currently in database ****
    // create fetch object, this object fetch's the objects out of the database
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName: tableName inManagedObjectContext:manageObjContext];
    [fetchRequest setEntity:entity];
    NSArray *fetchedObjects = [manageObjContext executeFetchRequest:fetchRequest error:&error];
    return  fetchedObjects;
}

并使用以下代码获取记录

  NSArray *records=[dbAccessObj recordsInTable:@"Details" andManageObjectContext:managedObjectContext];
    NSLog(@"records %@",records);

我收到这样的日志

**records (
    "<Details: 0x76374b0> (entity: Details; id: 0x7636730 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p1> ; data: <fault>)",
    "<Details: 0x7637770> (entity: Details; id: 0x7636740 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p2> ; data: <fault>)",
    "<Details: 0x7637870> (entity: Details; id: 0x7636750 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p3> ; data: <fault>)"
)**

但我想显示所有详细信息的日志,显示如下所示的记录。我犯了什么错误?

**{
    age = 11;
    fName = "firstName";
    lName = "lastname";
    sId = 4;
})**
4

2 回答 2

2

您的代码中没有错误。您在数组中看到的是“故障”。从核心数据编程指南:

故障是 Core Data 用来减少应用程序内存使用的一种机制。

...故障是表示尚未完全实现的托管对象的占位符对象,或表示关系的集合对象。

...如果在某个阶段访问了故障对象的持久属性,那么 Core Data 会自动检索该对象的数据并初始化该对象。

executeFetchRequest:返回一个故障数组(=占位符对象)以节省内存。一旦您检索到对象的属性,该对象就会完全初始化,并且所有属性在调试器中都是可见的。

对于调试目的(仅限),您可以强制 Core Data 通过以下方式完全初始化数组中的所有对象

NSArray *allAges = [records valueForKey:@"age"];
NSLog(@"records %@",records);
于 2012-09-14T05:02:03.423 回答
1

我认为您可以使用 debugDescription。只需从调试命令行编写:

po [coreDataObject debugDescription];

它会给你详细的信息。

于 2014-06-23T15:39:11.787 回答