coredata错误,因为sectionNameKeyPath或NSFetchedResultsController上的数据分组

时间:2011-12-28 04:01:23

标签: objective-c nsfetchedresultscontroller

2011-12-28 10:52:13.633 BadgerNew[663:707] CoreData: error: (NSFetchedResultsController) object <Business: 0x628c8e0> (entity: Business; id: 0x628c870 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/Business/p88> ; data: {
    Aliases = "<relationship fault: 0x6219950 'Aliases'>";
    Bookmark = 0;
    Building = nil;
    City = "0x56531a0 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/City/p1>";
    Distance = "104.6926812925746";
    Districts =     (
        "0x63bcb30 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/District/p1>"
    );
    Email = nil;
    ID = 74318;
    Images = "<relationship fault: 0x621a130 'Images'>";
    InBuildingAddress = nil;
    LatitudeLongitude = "0x565c2e0 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/LatitudeLongitude/p81>";
    Like = 0;
    OpeningHour = nil;
    Phones = "<relationship fault: 0x62196b0 'Phones'>";
    Price = 0;
    Promotions = "<relationship fault: 0x6219630 'Promotions'>";
    Rating = "0x565e800 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/Rating/p81>";
    Reviews =     (
    );
    Street = "Jl. Duri Raya 73";
    Tags =     (
        "0x63c38b0 <x-coredata://8D661026-BBFA-4C41-B434-167800D925DD/Tag/p74>"
    );
    Tenants = "<relationship fault: 0x62194c0 'Tenants'>";
    TimeStamp = nil;
    Title = "Toko Guna Bangunan Jaya";
    URLs = "<relationship fault: 0x6219440 'URLs'>";
    Website = nil;
    Zip = 11510;
    pinAndLineNumber = 1;
    updated = 0;
}) returned nil value for section name key path 'Building.Title'. Object will be placed in unnamed section

当我想在NSFetchedResultsController上使用sectionNameKeyPath:@“Building.Title”对数据进行分组时,会出现此错误日志。像这样的东西

NSFetchedResultsController * FRC=[[[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:[ThreadClass managedObjectContext] sectionNameKeyPath:@"Building.Title" cacheName:Nil]autorelease];

任何人都可以帮我解决这个问题,建筑可以是零吗?因为我想展示像

这样的东西

enter image description here

2 个答案:

答案 0 :(得分:4)

我想出了答案。如果您按建筑分组,则还必须按建筑或建筑位置进行分类。排序顺序必须与分组顺序一致。因此,您不能在同一“组”中的项目具有单独排序的情况。

答案 1 :(得分:3)

您应该做的第一件事是重命名您的关系和属性。我不知道如何,但通常属性名称和关系名称不能以大字母开头。通常Xcode中的模型编辑器强制执行此操作。

现在问你的实际问题:

一如既往,有多种解决方案。我试着解释一个可能的解决方案:

确保Building.Title永远不会为零:您可以在控制器层或模型层中执行此操作。如果在模型层中执行此操作,只需为此实体创建NSManagedObject的子类,并创建一个新的只读属性,您可以将其称为“titleForDisplay”。在返回Title的值之前,只需检查它是否为nil,如果是,则将其替换为表示nil值的本地化字符串。