使用“对多”关系从 NSFetchedResultsController 派生 UITableView 部分

2024-05-07

我的核心数据模型如下所示:

article <--->> category

是否可以远程使用NSFetchedResultsController生成一个看起来像这样的 UITableView?

Category 1
  - Article A
  - Article B
  - Article C
Category 2
  - Article A
  - Article D
  - Article E
  - Article F
Category 3
  - Article B
  - Article C

具体来说,我对(边缘?)情况感兴趣,其中每个 UITableView 部分都有唯一的标题(例如,“类别 1”、“类别 2”),但同一对象可以存在于多个部分中(例如,存在文章 A在类别 1 和类别 2 中)。

我浏览了苹果的核心数据文档,并花了两天时间仔细研究这里的问题,但可惜的是,甚至没有找到这是否可能的运气,更不用说如何实现它了。感谢您提供任何帮助或指向先前回答的问题。我当然找不到。


是的,这很容易,尽管有一百万种方法可以做到。

您的视图控制器应该是UITableView,并返回有关行数的信息,然后返回每行的内容。

表格视图中有一个“部分”的概念,您可以选择为每个类别都有一个“部分”。

例如,您可以创建一个NSFetchedResultsController找到要显示的类别,并使用它来填充表视图部分,然后每个类别将具有文章多对多关系,以填充每个部分中的行。

像这样的东西应该可以帮助您开始(假设您的类别和文章实体都包含title财产):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   // return the number of categories
    [[self.categoryResultsController fetchedObjects] count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
  // return the title of an individual category
    [[self.categoryResultsController.fetchedObjects objectAtIndex:section] valueForKey:@"title"];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  // return the number of articles in a category
  MyCategory *category = [self.categoryResultsController.fetchedObjects objectAtIndex:section];

  return category.articles.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  // fetch a cached cell object (since every row is the same, we re-use the same object over and over)
    static NSString *identifier = @"ArticleCellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }

    // find the category and article, and set the text of the cell
    MyCategory *category = [self.categoryResultsController.fetchedObjects objectAtIndex:indexPath.section];

    cell.textLabel.text = [[category.articles objectAtIndex:indexPath.row] valueForKey:@"title"];

    return cell;
}

您可以阅读有关这些方法的文档,以了解如何进一步自定义它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“对多”关系从 NSFetchedResultsController 派生 UITableView 部分 的相关文章

  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 当强制退出/向上滑动以终止 iOS 应用程序而不点击横幅/警报时,如何获取推送通知有效负载?

    我正在构建一个应用程序来处理从 Parse 推送的通知 并尝试创建通知历史记录功能 我已经成功启用了后台模式 因此当应用程序在后台运行时 应用程序可以通过以下方式很好地获取有效负载application didReceiveRemoteNo
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • 在 swift3 中结合平移、alpha 和缩放动画

    我是 iOS Swift 开发的新手 我尝试将三个参数组合在一个动画中 但没有成功 我认为解决方案就在这里 Apple Dev Core 动画编程指南 https developer apple com library content do
  • 在 iOS5 中使用 UISegmentedControl 切换 ViewController

    我正在尝试一些非常简单的事情 但不知何故我无法让它发挥作用 我尝试做的就是使用 UISegmentedControl 在 2 个视图控制器之间切换 就像您可以在 App Store 应用程序的 突出显示 选项卡中看到的那样 我正在使用 iO
  • 具有自动布局的 UITableViewCell 中的 UILabel 高度错误

    我有一个UITableView单元格的固定高度为 100 点 这些单元格是在 xib 文件中创建的 该文件使用 3 个约束来固定UILabel到单元格的左 右和上边缘contentView 标签的垂直拥抱优先级设置为 1000 因为我希望单
  • 使用 iPhone 摄像头检测心率 [重复]

    这个问题在这里已经有答案了 可能的重复 使用摄像头检测心率 https stackoverflow com questions 9274027 detecting heart rate using the camera 我正在研究 iOS
  • 如何在 Xcode 4 中在 .h 和 .m 之间切换

    刚刚安装的 Xcode 4 到目前为止一切顺利 除了 Apple 更改了所有键盘快捷键 有人知道如何在 h 和 m 之间切换吗 苹果改变了各种快捷键 但要在标头和实现之间切换 新的快捷键是 You can change it back to
  • React Native:不透明视图内的透明视图

    我想用不透明框架和透明中心显示相机的视图 就像图片中的一样 黑色部分是相机的视图 我正在寻找具有纯反应本机组件的解决方案 没有额外的库 例如https github com gilbox react native masked view h
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • 两者都实现了类。将使用两者之一

    我有一个项目 它具有使用 SocketRocket 的依赖项 通过 CocoaPods 安装 并从 HeapAnalytics 导入了静态库 显然 HeapAnalytics 库已经使用了 SocketRocket 编译时没有出现错误 但在
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • ViewWillAppear 没有被 UISplitViewController 调用

    背景和目标 我有一个基于 UISplitViewController 的 iPad 应用程序 到目前为止它支持 4 个方向 但现在我想将其锁定为仅横向 我变了shouldAutorotateToInterfaceOrientation左视图
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • 将带有地理位置数据的照片保存到照片库 Swift 3

    如何使用地理位置元数据将照片保存到照片库 我已请求 并允许 应用程序访问用户位置 private func allowAccessToUserLocation locationManager CLLocationManager locati
  • iOS 10 的错误? NSDate 日本地区时间描述和 24 小时休息

    这似乎是 iOS 10 的一个错误 在 iOS 8 和 9 中都可以 NSDate date description 的小时描述是错误的 它附加了 24 小时描述和 12 小时描述 我没有使用 NSDateFormatter 只是默认设置

随机推荐

  • 正则表达式限制 url 文件夹的通配符

    我想设置一个与 URL 的某些模式匹配的正则表达式 http www domain com folder1 folder2 anything anything index html 这匹配并完成工作 http www domain com
  • 带有占位符文本的文本框,该文本会逐字符消失

    我正在寻找一种方法来构造带有日期字段占位符文本的文本框 占位符文本将为 xx xx xxxx 并在用户键入时逐个字符消失 留下斜杠 我遇到了以下两个问题 它们似乎解决了使文本立即消失的问题 HTML CSS 制作一个文本框 其中的文本显示为
  • Android:Enter 或 Tab 键仍然使用 jetpack compose 在密码输入字段中输入值

    当我输入或 Tab 键时 仍然使用 jetpack compose 在密码输入字段中输入值 下面是我的代码片段 val focusRequester FocusRequester createRefs TextField value tex
  • Python 3.8 的点子

    如何安装适用于 Python 3 8 的 Pip 我将 3 8 设置为我的默认 Python 版本 sudo apt install python3 8 pip gives 无法找到包 python3 8 pip 和跑步 python3 8
  • Ionic 3 如何确保在加载视图之前获取数据库数据

    我正在使用基于令牌的身份验证 并且令牌已保存在数据库中 当应用程序启动时 我需要从数据库获取令牌并使其可用 然后再进行 API 调用 最好的方法是什么 在组件中 ngOnit storage get token then val gt Ma
  • 模拟器中缺少“Web Inspector”设置

    在模拟器上执行 重置所有内容和设置 后 在 safari 中启用 Web 检查器的设置消失了 我不知道如何恢复它 有谁知道如何恢复它 并再次在模拟器中 远程 调试网页 似乎这个选项在模拟设备中不可用 提示 如果您想从桌面 Safari 连接
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 是否存在 UTF-8 编码中未使用的字节?

    据我了解 UTF 8 是 ASCII 的超集 因此包括不用于表示可打印字符的控制字符 我的问题是 是否有任何字节 256 个不同的字节 未被 UTF 8 编码使用 我想知道你是否可以转换 编码UTF 8 文本转二进制 这是我的思考过程 我不
  • 所有模型的 SQLAlchemy 事件 after_create

    我正在开发一个项目 需要对创建的每个模型进行通用定制 迄今为止我完成大部分工作的方式是通过模型继承 这是我的代码块 可以为您提供更好的想法 app core dba mixins class AuditExtension MapperExt
  • Bash:查找并连接文件

    我有以下结构 home DIR1 file ab csv DIR2 file cd csv DIR3 file3 ef csv Where file csv包含多行浮点数 每个 DIR 都有不同的浮点数 我想抓取所有的内容file csv文
  • C++11 的 LLVM&Clang 支持

    我有一些为 MS VC 10 编写的代码 我使用 C 11 特别是像这样的表达式 std function
  • Firebase 3.x - Facebook 登录

    InFirebase 2 5 1 我曾经这样做过 而且很有效 IBAction func facebookLoginDidTouch sender AnyObject let facebookLogin FBSDKLoginManager
  • 使用 setcap 功能运行时 JLI_InitArgProcessing 的 Java“符号查找错误”

    我们在服务器上安装了 Java 11 旨在监视网络接口的流量 初始安装后 yum install java 11 openjdk devel x86 64 the java命令对两者都适用root and a 普通用户 但是 我们的 Jav
  • 将画布输出图像调整为特定尺寸(宽度/高度)

    我有一个大画布 5000x5000 我想拍一张照片并在客户端创建一个缩略图 我可以使用捕获图像canvas toDataURL但我该如何调整它的大小 我必须创建一个新的吗
  • 什么是“标量”查询?

    我正在使用 LLBLGEN 其中有一种方法可以将查询作为scalar query 谷歌搜索给了我一个定义scalar sub query 它们一样吗 标量查询是返回由一列组成的一行的查询
  • 当互联网连接丢失时,不间断地读取输入流

    我使用异步任务来下载文件 它正常工作 直到我关闭我的 Android 的 wifi 连接 没有其他互联网连接 下载对话框仍然存在并且没有任何变化 当我检查日志时 我发现输入流的函数 read 不停顿 那么如何检查这个案例呢 这是我的代码 U
  • iPhone UIDatePicker 风格

    有什么方法 技巧可以更改 uiDatePicker 的大小 字体 背景颜色等吗 甚至背景颜色属性也不起作用 并且选择器的默认样式与我的应用程序的设计无关 也许你可以使用 UIPickerView 来代替 我见过人们使用图像作为背景 不过 您
  • 通过 Emacs 评估 ghci 或 Hugs 中的缓冲区

    在 Emacs 中使用 sml mode 我已经能够使用以下命令将缓冲区内容直接发送到较差的 SML 进程C c C b 现在我只想用 Haskell 做同样的事情 Haskell 模式似乎不支持这一点 所以我想知道 使用 Emacs 和
  • 如何删除/统计 s3 存储桶中的对象?

    所以我知道这是一个常见问题 但似乎没有任何好的答案 我有一个桶 里面有大量 我不知道有多少 文件 都在2k一个以内 1 我如何知道我有多少个这些文件没有列出他们 我使用过 s3cmd rb aws s3 和 jets3t 的东西 我能找到的
  • 使用“对多”关系从 NSFetchedResultsController 派生 UITableView 部分

    我的核心数据模型如下所示 article lt gt gt category 是否可以远程使用NSFetchedResultsController生成一个看起来像这样的 UITableView Category 1 Article A Ar