- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个构建 frc 的方法:
private func buildFRC<T:NSManagedObject>(entity: T, sortKey: String)
-> NSFetchedResultsController<T>? {
let fetchRequest: NSFetchRequest = T.fetchRequest()
let sortDescriptor1 = NSSortDescriptor(key: sortKey, ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor1]
searchContext.reset()
var frc: NSFetchedResultsController<T>? =
NSFetchedResultsController<T>(
fetchRequest: fetchRequest as! NSFetchRequest<T>,
managedObjectContext: searchContext,
sectionNameKeyPath: nil,
cacheName: nil)
frc!.delegate = self
try? frc!.performFetch()
return frc
}
我想在一个闭包中调用这样的东西:
self.frc = self.buildFRC(entity: ObjectName, sortKey: "trackName")
但是我收到了这个错误:
"Cannot convert value of type 'ObjectName.Type' to expected argument type 'NSManagedObject'".
然而,ObjectName
是 NSManagedObject
的类名。我试过自己但最终我只是不停地追逐错误。
最佳答案
您的函数声明并不代表完全您认为的那样。
private func buildFRC<T:NSManagedObject>(entity: T, sortKey: String) -> NSFetchedResultsController<T>?
这意味着 T
必须是 NSManagedObject
的子类,并且第一个参数必须是 T 的实例。当你这样调用它时
self.frc = self.buildFRC(entity: ObjectName, sortKey: "trackName")
...当您的声明需要一个实例时,您将子类作为第一个参数传入。
修复起来并不难,因为您不需要将 T
作为参数包含在内。通常,Swift 泛型不需要您将类型作为参数传递——类型来自函数的使用方式。删除该参数并将声明重写为
private func buildFRC<T:NSManagedObject>(sortKey: String) -> NSFetchedResultsController<T>? {
然后用类似的东西调用函数
self.frc: NSFetchedResultsController<ObjectName>? = self.buildFRC(sortKey: "trackName")
Swift 会发现 T
在该调用中代表 ObjectName
,并且代码会起作用。
顺便说一句,您对 searchContext.reset()
的调用有点危险,可能不需要。如果您从上下文中获取一些对象,然后稍后调用此函数,则 reset
将导致所有那些先前获取的对象变得无效。使用它们会使您的应用崩溃。
关于swift - 需要通用的 FetchedResultsController 构建器(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53330297/
我正在尝试过滤 FetchedResultsController 中的项目以过滤掉特定的一组项目。这些发动机具有特定的字母名称,后跟数字。名称中可能的字母范围是从“A”到“O”。我希望能够根据另一个条
因此,我有以下代码用于获取所有名为“设置”的核心数据实体 - (NSFetchedResultsController *)fetchedResultsController { if (fetc
我遇到一种情况,需要使用多个排序描述符对数据进行排序。我想首先使用两个组件对数据进行排序,这两个组件是按降序排列的数字。然后,我应该在 TableView 上显示按名称组件排序的数据,并使用 sect
我有一个带有两个 UITableViews 的 UIViewController。这两个表是从不同的实体填充的,因此我使用了两个获取的结果 Controller 。在使用 UITableViewDel
我遇到了一个问题:在我的项目中,我使用 Core Data 来管理数据。我在所有项目中使用了一个 fetchResultsController。 在 AppDelegate.m 中,我执行了一个获取请
我使用了我在网络上流行的核心数据教程之一中找到的代码: lazy var fetchedResultsController: NSFetchedResultsController = {
我有一个多语言应用。用户根据他/她选择的当前语言插入数据,例如:如果用户选择英语,那么他/她此时插入的数据将与语言英语相关联,如果用户决定更改语言,例如,转到葡萄牙语,然后插入新记录,当前记录将与葡萄
我正在编写一个使用 coredata 的小应用程序,我有像主题这样的数据,其中包含数学、科学和其他书籍。 其他书籍可以添加或删除,但数学和科学不能删除,添加新学生时会默认添加。当我获取结果时,我应该获
在编程方面,我是一个周末勇士,所以我可能做错了什么...... 我有一个 Split View Controller 、核心数据、nsfetchedResultsController,一切都很好。我现
我在核心数据中有一个“账单”列表。对于每个账单,我希望 UITableViewController 中有一个单独的部分。我希望这些账单按金额排序。 为此,我使用 fetchedResultsContr
尝试创建简单的应用程序来显示从核心数据到 TableView 的数据。代码构建成功 - 每次加载时都会添加新条目,目前超过 20 个 - 但是在尝试构建表时它会崩溃。 这里我有 ViewControl
我已经简化了我的问题以使问题变得更容易,所以希望我发布的代码足够了。 我的目标是使用一个可以支持 CoreData 中的多个模型的类,这样我就可以避免为每个类重新创建相同的内容。 class FRC
我想将一个对象从 fetchedResultsController 发送到自定义单元格。 - (UITableViewCell *)tableView:(UITableView *)tableView
我在让 tableView 正确更新时遇到了问题,尽管我已经取得了一些进展。如果我的问题在于我的 fetchedResultsController 返回了不需要的部分,我认为问题的根源。 我的目标是让
我有两个实体 A 和 B,它们的关系是多对多的。实体类如下: 一个NSSet *toB 乙NSSet *toA 现在我有一个 A 对象,我可以通过使用“toB”集获取所有相关的 B 对象。由于需要对B
我有由获取结果 Controller 管理的 TableView 。我想要的是,当用户点击分段控件时更改排序顺序。这就是我创建获取结果 Controller 的方式: - (NSFetchedResu
我在 IB 中有一个原型(prototype) TableView ,它有两种不同类型的单元格:完整单元格和基本单元格(用于显示文章,我根据文章类型使用每一种单元格)。 我想将 FetchedResu
+-----------+ +-----------+ | -Parada- | | -Autobus- | +-----------+
假设我有以下类模型。我有 UITableView,它按以下方式显示 Days 表中的数据: Monday 02.03 5 lessons Wednesday 04.03 3 lessons 任务很简单
我正在尝试获取按其属性之一(单词)过滤的实体列表,为此我使用了 fetchedResultsController,一切看起来都正常。该列表已加载并显示在我的 tableView 上,我什至可以对列表进
我是一名优秀的程序员,十分优秀!