NSFetchedResultsController 已创建,但部分为零



我遇到了我认为是缺陷的东西,但我不确定它是否在我的代码中,还是在 RubyMotion 中,还是在 iOS 中......

"标签"模型:

class Tag < CDQManagedObject
  def sectionIdentifier
    puts "Called"
    name ? name[0] : " "
  end
  def keyPathsForValuesAffectingSectionIdentifier
    NSSet.setWithObject("name")
  end
end

我的控制器视图的一部分DidLoad 方法:

self.query = Tag.sort_by(:name)
self.tags_results = NSFetchedResultsController.alloc.initWithFetchRequest(self.query.fetch_request, managedObjectContext: cdq.contexts.current, sectionNameKeyPath: "sectionIdentifier", cacheName: nil)
self.tags_results.delegate = self
puts tags_results.sections.inspect

问题是,tags_results节是零的。 我这里有点问题,但我不确定在哪里。

嗯...

我以前从未使用过红宝石,所以不是100%确定。

但是,如果这就是您使用的所有代码,那么我想我看到了问题。

创建NSFetchedResultsController,您为其提供请求、部分标识符等...

但是,您并没有告诉控制器实际运行提取。

Objective-C我会做...

[fetchedResultsController performFetch:nil];

这告诉控制器去实际获得结果。

只有这样,才会填充部分属性。

sections 属性是实际获取对象的数组,因此如果不获取它们,它将始终为零。

编辑

是的。。。

从文档中...http://www.rubymotion.com/developer-center/api/NSFetchedResultsController.html#performFetch%3A-instance_method

你需要运行...

self.tags_results.performFetch(nil)
// or whatever the syntax is

最新更新