NSFetchedResultsController已创建,但section为nil

时间:2014-03-05 07:54:36

标签: ios core-data rubymotion

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

“tag”型号:

class Tag < CDQManagedObject
  def sectionIdentifier
    puts "Called"
    name ? name[0] : " "
  end

  def keyPathsForValuesAffectingSectionIdentifier
    NSSet.setWithObject("name")
  end
end

我的控制器的viewDidLoad方法的一部分:

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.sections是零。我这里有点不对劲,但我不确定在哪里。

1 个答案:

答案 0 :(得分:3)

嗯...

我以前从未使用过rubymotion,所以不是100%肯定。

但是,如果这是您正在使用的所有代码,那么我认为我看到了问题。

创建了NSFetchedResultsController并为您提供了请求,sectionIdentifier等...

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

Objective-C我会做......

[fetchedResultsController performFetch:nil];

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

只有这样才能填充sections属性。

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

修改

...是

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

你需要跑......

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