【问题标题】:Fetch transformable coredata element correctly正确获取可转换的 coredata 元素
【发布时间】:2014-01-03 00:02:25
【问题描述】:

EDIT2: 我的主要目标是用下面的信息填写表格视图,例如,每个单元格将包含地址和名字。有没有一种简单的方法可以从我拥有的内容中填充表格视图?

好的,我无法正确加载已保存到 coredata 中的数据。我将字典/数组保存到可转换的 coredata 属性中。这是我保存到 coredata 的 nslog:

(
        {
        "ADD_CITY" = ABC;
        "ADD_LINE1" = "123 MAIN";
        "ADD_LINE2" = "";
        "ADD_STATE" = IA;
        "ADD_ZIP" = 50833;
        "BUSINESS_NAME" = "";
        "FIRST_NAME" = JOHN;
        "LAST_NAME" = DOE;
    },
        {
        "ADD_CITY" = ABCD;
        "ADD_LINE1" = "1234 MAIN";
        "ADD_LINE2" = "";
        "ADD_STATE" = IA;
        "ADD_ZIP" = 50833;
        "BUSINESS_NAME" = "";
        "FIRST_NAME" = JOE;
        "LAST_NAME" = SMITH;
    }
)

一切都很好,但是当我稍后尝试加载它时,我的问题就出现了,这就是我正在做的事情:

 NSFetchRequest *fetchRequest2 = [NSFetchRequest fetchRequestWithEntityName:@"Locations"];
        NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Locations" inManagedObjectContext:self.managedObjectContext];


        fetchRequest2.resultType = NSDictionaryResultType;


        fetchRequest2.propertiesToFetch = [NSArray arrayWithObject:[[entity2 propertiesByName] objectForKey:@"location"]];

        [fetchRequest2 setPredicate:[NSPredicate predicateWithFormat:@"policy == %@", self.policy]];

        fetchRequest2.returnsDistinctResults = YES;

        self.dictionaries2 = [self.managedObjectContext executeFetchRequest:fetchRequest2 error:nil];
        NSLog (@"locations2: %@",self.dictionaries2);

我认为我得到了一个“嵌套”字典?

上面的nslog:

locations2: (
        {
        location =         (
                         {
    "ADD_CITY" = ABC;
    "ADD_LINE1" = "123 MAIN";
    "ADD_LINE2" = "";
    "ADD_STATE" = IA;
    "ADD_ZIP" = 50833;
    "BUSINESS_NAME" = "";
    "FIRST_NAME" = JOHN;
    "LAST_NAME" = DOE;
},
    {
    "ADD_CITY" = ABCD;
    "ADD_LINE1" = "1234 MAIN";
    "ADD_LINE2" = "";
    "ADD_STATE" = IA;
    "ADD_ZIP" = 50833;
    "BUSINESS_NAME" = "";
    "FIRST_NAME" = JOE;
    "LAST_NAME" = SMITH;
}
        );
    }
)

我如何只获得“位置”而不是我获得的额外级别?

编辑:

也许更简单的方法就是删除获取结果的外层?如果是这样,我该怎么做?

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

    带有NSDictionaryResultType 的提取请求返回一个字典数组 (每个获取的属性都有一个键/值对)。 如果您只对特定财产的价值感兴趣(在您的情况下为“位置”) 你可以使用valueForKey:

    NSArray *locations = [self.dictionaries2 valueForKey:@"location"];
    

    但是,从输出看,您好像只创建了一个 single 核心数据 包含整个字典数组的对象。通常,人们会创建一个核心数据 每个位置的对象。要在表格视图中显示数据,您可以使用 NSFetchedResultsController.

    【讨论】:

    • 这几乎是我需要知道的,我添加了 objecAtIndex:0 就是这样!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多