2010-10-17 185 views
0

我从iphone开始并且面临核心数据问题。核心数据问题

我有一个模型收集几个实体,如员工,项目,项目类型等在启动时,我创建了我通过核心数据框架仍然存在几个实体。没问题。

的问题提出时,我想显示的基础用户UIToolbar内选择一个选项卡上的项目清单。我已经设置的参数显示(-com.apple.CoreData.SQLDebug 1)发布的每一个SQL请求,什么是真正尴尬的是,在控制台中显示的查询给我的时候,通过源码而是从核心数据访问在我身边的分贝我的结果,不,0行返回...

任何人都遇到了类似的问题?

这里是用于检索的项目的列表的代码:

NSArray* retVal = nil; 
NSError *error = nil; 

NSManagedObjectContext *moc = "context retrieved"; 
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:moc]; 
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 
retVal = [moc executeFetchRequest:request error:&error]; 

NSLog(@"Project type: %@", [theProjType valueForKey:@"projectTypeName"]); 
NSLog(@"Employee number: %@", [theEmployee valueForKey:@"employeeNumber"]); 

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"ANY myEmployees.employeeNumber = %d AND myProjectType.projectTypeName = %d", [theEmployee valueForKey:@"employeeNumber"], [theProjType valueForKey:@"projectTypeName"]]; 
[request setPredicate:predicate]; 
retVal = [moc executeFetchRequest:request error:&error]; 

此代码生成此SQL请求(在源码分贝启动时返回结果):

SELECT DISTINCT 0, t0.Z_PK, t0.Z_OPT, t0.ZPROJECTNUMBER, t0.ZISEDITABLE, t0.ZPROJECTNAME, t0.ZISDELETABLE, t0.ZPROJECTEND, t0.ZPROJECTID, t0.ZPROJECTSTART, t0.ZCUSTOMERORDERNR, t0.ZMYCUSTOMER, t0.ZMYCOSTCENTRE, t0.ZMYPROJECTTYPE, t0.ZMYTRAVELTIMES FROM ZPROJECT t0 JOIN Z_4MYPROJECTS t1 ON t0.Z_PK = t1.Z_10MYPROJECTS1 JOIN ZEMPLOYEE t2 ON t1.Z_4MYEMPLOYEES = t2.Z_PK JOIN ZPROJECTTYPE t3 ON t0.ZMYPROJECTTYPE = t3.Z_PK WHERE (t2.ZEMPLOYEENUMBER = ? AND t3.ZPROJECTTYPENAME = ?) 
+0

这将有助于张贴在那里你建立NSFetchedResultsController代码并执行读取。 – Nimrod 2010-10-17 19:20:03

+0

感谢Nimrod的建议,我为我的问题添加了一些代码。 – 2010-10-17 19:42:27

回答

2
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"ANY myEmployees.employeeNumber = %d AND myProjectType.projectTypeName = %d", [theEmployee valueForKey:@"employeeNumber"], [theProjType valueForKey:@"projectTypeName"]]; 

你确定这是正确的吗? valueForKey:总是返回一个NSObject,但占位符是%d。这应该会产生奇怪的行为。尝试%@代替

+0

谢谢!我很难问一个问题,问题很简单:S – 2010-10-18 05:21:24