coredata 错误,因为 sectionNameKeyPath 或 NSFetchedResultsController 处的分组数据
Posted
技术标签:
【中文标题】coredata 错误,因为 sectionNameKeyPath 或 NSFetchedResultsController 处的分组数据【英文标题】:coredata error because sectionNameKeyPath or grouping data at NSFetchedResultsController 【发布时间】:2011-12-28 04:01:22 【问题描述】: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];
任何人都可以帮我解决这个问题,Building can be nil?因为我想展示类似的东西
【问题讨论】:
【参考方案1】:我想出了答案。如果您按建筑物分组,则还必须按建筑物或建筑物位置排序。您的排序顺序必须与您的分组顺序相匹配。因此,您不能遇到同一“组”中的项目有单独排序的情况。
【讨论】:
【参考方案2】:您应该做的第一件事是重命名您的关系和属性。我不知道如何,但通常属性名称和关系名称不能以大字母开头。通常 Xcode 中的模型编辑器会强制执行此操作。
现在你的实际问题:
与往常一样,解决方案不止一种。我尝试解释一种可能的解决方案:
确保 Building.Title 永远不会为零:您可以在控制器层或模型层中执行此操作。如果您在模型层中执行此操作,只需为此实体创建 NSManagedObject 的子类并创建一个新的只读属性,您可以将其称为“titleForDisplay”。在返回 Title 的值之前,只需检查它是否为 nil,如果是,则将其替换为表示 nil 值的本地化字符串。
【讨论】:
谢谢,我在 NSManagedObject 子类中使用了一个新的只读属性,它解决了我的“为部分名称键路径返回 nil 值”的问题。以上是关于coredata 错误,因为 sectionNameKeyPath 或 NSFetchedResultsController 处的分组数据的主要内容,如果未能解决你的问题,请参考以下文章
CoreData:找不到 NSEntityDescription 的唯一匹配项
NSFetchedResultsController、sectionNameKeyPath 和无数据日期的部分