我在创建聊天应用程序,其中我将数据保存在核心数据中。我使用以下实体,
我想要获取所有唯一customerno
的数据,并且该数据将按messagedate
的降序排列,其中还包含从其他messagetext
发送的最新cmid
。我想显示列表,如Facebook聊天消息列表和smiler视图。
我尝试下面的代码,
-(NSArray *)getAllInstanceMessages{
NSError *error = nil;
NSFetchRequest * req = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"IMDetails" inManagedObjectContext:theManageContext];
[req setPredicate:[NSPredicate predicateWithFormat:@"cmid=%@", theCmID]];
NSDictionary *entityProperties = [entity propertiesByName];
[req setEntity:entity];
[req setReturnsDistinctResults:YES];
[req setResultType:NSDictionaryResultType];
[req setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"customerno"]]];
[req setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"messagedate" ascending:NO]]];
NSArray *result = [theManageContext executeFetchRequest:req error:&error];
if(error){
NSLog(@"%s, %@", __FUNCTION__, [error localizedDescription]);
return nil;
}
return result;
}
上面的代码给出了我的以下输出,
Printing description of result:
<_PFArray 0xa3cda70>(
{
customerno = CN00001;
customerno = CN00002;
customerno = CN00003;
}
)
我想要完整的数据以及这个唯一的数字,我的意思是包含唯一数据的字典/ ManagedObject数组,假设在上面的CN0001编号中,但它不包含其他属性值。
我在代码中做错了什么?
答案 0 :(得分:1)
根据setPropertiesToFetch方法的NSFetchRequest类参考文档:“仅当resultType设置为NSDictionaryResultType时才使用此值。”
答案 1 :(得分:0)
您需要在setPropertiesToFetch中设置要获取的表的所有属性。像
[req setPropertiesToFetch:[NSArray arrayWithObjects:[entityProperties objectForKey:@"customerno"],[entityProperties objectForKey:@"messagetext"],nil]];
这将返回带有两个值的NSDictionary。