2

我创建了聊天应用程序,在其中我将数据保存在核心数据中。我使用以下实体,

在此处输入图像描述

我想获取所有唯一customerno的数据,并且该数据将按降序排列,messagedate还包含messagetext从其他发送的最新数据cmid。我想显示像 facebook 聊天消息列表和微笑视图这样的列表。我尝试以下代码,

-(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 数字中,但它不包含其他属性值。

我在代码中做错了什么?

4

2 回答 2

1

根据 setPropertiesToFetch 方法的 NSFetchRequest 类参考文档:“仅当 resultType 设置为 NSDictionaryResultType 时才使用此值。”

于 2013-09-28T13:41:54.593 回答
0

您需要在 setPropertiesToFetch 中设置要获取的表的所有属性。喜欢

[req setPropertiesToFetch:[NSArray arrayWithObjects:[entityProperties objectForKey:@"customerno"],[entityProperties objectForKey:@"messagetext"],nil]];

这将返回具有两个值的 NSDictionary。

于 2013-09-28T14:33:08.587 回答