我遇到了我认为是缺陷的东西,但我不确定它是在我的代码中,还是在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是零。我这里有点不对劲,但我不确定在哪里。
答案 0 :(得分:3)
嗯...
我以前从未使用过rubymotion,所以不是100%肯定。
但是,如果这是您正在使用的所有代码,那么我认为我看到了问题。
创建了NSFetchedResultsController
并为您提供了请求,sectionIdentifier等...
但是,您并没有告诉控制器实际运行提取。
在Objective-C
我会做......
[fetchedResultsController performFetch:nil];
这告诉控制器去实际获得结果。
只有这样才能填充sections属性。
sections
属性是实际获取对象的数组,因此如果不提取它们,它将始终为零。
修改强>
...是
你需要跑......
self.tags_results.performFetch(nil)
// or whatever the syntax is