核心数据:如何根据姓名的第一个字母将联系人(实体)组织成部分?

Posted

技术标签:

【中文标题】核心数据:如何根据姓名的第一个字母将联系人(实体)组织成部分?【英文标题】:Core Data : how to organize contacts (entity) into sections based on the first letter of their names? 【发布时间】:2015-05-18 04:36:23 【问题描述】:

我有点茫然,我有一个实体“联系人”,它有一个属性“姓氏”,我想将我的联系人组织到一个分组的分段表格视图中,但我似乎无法理解要走的路。 在 *** 上度过了最后两天,但我无法让它工作,我已将“瞬态”属性添加到我的实体“联系人”,生成类文件,更新模型,更改代码但无济于事,我继续得到此错误消息表明找不到我的瞬态属性。所以回到第一方,是什么给了......?在这里阅读了大部分答案,但仍然无法正常工作....

谢谢 Mundi....把它放到我的 contacts.h 文件中会给我一个解析错误,我必须 @interface 还是 @implement 呢?我不明白......发现瞬态属性和unNSSortDecriptor(ed)的错误并解决了这个问题,但我只是继续获取​​节标题和表格中的所有条目......我完全不知所措

谢谢 Ian 和 Mundi....终于让它工作了,在 2010 年 gerry 3 的帖子上工作...在我的实体“联系人”的 .h 文件中接口,在 .m 文件中实现...然后将 sectionKeyPath 中的获取结果控制器更改为我在实体类文件中创建的 NSString ...我自己犯了新手错误,但仔细阅读了很多堆栈溢出的一天...再次感谢

【问题讨论】:

查看我对 Core Data 中瞬态属性的回答:***.com/questions/25960555/… 谢谢伊恩....会及时通知你......干杯 不,不是真的 Ian....你的项目在 Swift 中,我在 Obj C 中..谢谢都一样.... 您的问题未被标记。方法都是一样的,你只需要查一下翻译 【参考方案1】:

将名为 initial 的瞬态属性添加到您的 Contacts 实体。在Contacts.m实现首字母计算:

-(NSString *)initial 
   if (self.lastName.length) 
     return [self.lastName subStringToIndex:1];
   
   return @"";

现在您只需将获取结果控制器的sectionNameKeyPath 设置为initial

【讨论】:

不错,不使用 FetchedResultsController 时有类似的解决方案吗? 如果您使用的是数组,我建议您使用 NSDictionary 对象数组,其中键是初始值,值是人员对象的数组。 我会记住这一点的。表格视图中自动生成的部分是我过去避免使用的。会给它一个裂缝! 好的,解析的东西已经排序......你能否更具体地解释你的解释我仍然不知所措......提前谢谢......如果我在获取的结果控制器中使用你的初始值比我崩溃了,因为 lastName 属性不能再被实现到表中...... 实际上这根本无法工作......我删除了你的 NSString 并且在我的构建中没有任何改变......我仍然得到了与我的条目相同的所有部分。 ...再次感谢...

以上是关于核心数据:如何根据姓名的第一个字母将联系人(实体)组织成部分?的主要内容,如果未能解决你的问题,请参考以下文章

仿Android 联系人SideBar排序,根据拼音A-Z字母快速导航,以及输入搜索条件过滤,显示姓名的文字图片

sql数据库问题

核心数据中的嵌套问题

WPF DataGrid MultiBinding到DataGrid ItemSsource中的类

根据联系人姓名获取 sectionIndex 标题

如何从 Web 服务器下载数据并保存核心数据