如何在 CoreData 的 NSLog 中显示详细信息?建议我一个解决方案
Posted
技术标签:
【中文标题】如何在 CoreData 的 NSLog 中显示详细信息?建议我一个解决方案【英文标题】:How to show detailed info inside NSLog in CoreData? suggest me a solution 【发布时间】:2012-09-13 05:25:39 【问题描述】:我正在使用 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;
)**
【问题讨论】:
【参考方案1】:您的代码没有错误。您在数组中看到的是“故障”。来自核心数据编程指南:
Faulting 是 Core Data 用来减少应用程序的一种机制 内存使用情况。
...故障是一个占位符对象,表示 尚未完全实现的托管对象,或集合 表示关系的对象。
...如果在某个阶段 访问故障对象的持久属性,然后访问 Core Data 自动检索对象的数据并初始化 对象。
executeFetchRequest:
返回一个故障数组(= 占位符对象)以节省内存。一旦您检索到对象的属性,该对象就会完全初始化,并且所有属性都在调试器中可见。
对于调试目的(仅限),您可以强制 Core Data 完全初始化数组中的所有对象
NSArray *allAges = [records valueForKey:@"age"];
NSLog(@"records %@",records);
【讨论】:
【参考方案2】:我认为您可以使用 debugDescription。只需从调试命令行编写:
po [coreDataObject debugDescription];
它会给你详细的信息。
【讨论】:
以上是关于如何在 CoreData 的 NSLog 中显示详细信息?建议我一个解决方案的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIColor 转换为 HEX 并在 NSLog 中显示