我在整个项目中使用此代码来更新我的UIBarButtonItem的标题。
在这个特定的类中,我有一个NSFetchedResultsController,我想把它设置为按钮的标题。
我在ViwDidLoad中调用此代码,但似乎它在获取之前被调用,因此计数始终为0.我尝试将它放在Fetch委托方法的末尾,但那并没有帮助。有任何想法吗?当我在fetch委托方法中对NS计数时,它是正确的。
self.myBarButton.title = [NSString stringWithFormat: @"%i count", [fetchedResultsController.fetchedObjects count]];
viewDidLoad中
- (void)viewDidLoad
{
[super viewDidLoad];
if (managedObjectContext == nil)
{
self.managedObjectContext = [(TestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSSet *filteredFromSession=[selectedSession.property filteredSetUsingPredicate:[NSPredicate predicateWithFormat: @"name == %@",name]];
if ([filteredFromSession count] > 0)
{
self.exercise = [filteredExercisesFromSession anyObject];
}
self.setLabel.title = [NSString stringWithFormat: @"%i sets", [fetchedResultsController.fetchedObjects count]];
}
答案 0 :(得分:1)
您是否检查过“self.myBarButton”以确保在设置标题时它不是零? (就像你忘了正确设置插座等)?
答案 1 :(得分:1)
当你这样做时,最有可能是
self.setLabel.title = [NSString stringWithFormat: @"%i sets", [fetchedResultsController.fetchedObjects count]];
fetchedResultsController
是nil
。
如果您为fetchedResultsController
定义了一个getter方法并将其声明为属性,我建议您在上一行之前进行提取,
NSError * error;
if (![self.fetchedResultsController performFetch:&error]) {
// Error
}
基本上确保在设置标题之前完成提取。执行此操作后,您可能希望从当前正在执行的位置删除提取。
答案 2 :(得分:0)
您如何访问栏按钮项?如何访问这样的。
BarButtonItem * item = [self.navigationItem rightBarButtonItem];
[itme setTitle:[NSString stringWithFormat: @"%i count", [fetchedResultsController.fetchedObjects count]]
答案 3 :(得分:0)
试试这个
self.setLabel.title = [NSString stringWithFormat: @"%d sets", [self.fetchedResultsController.fetchedObjects count]];
取代
self.setLabel.title = [NSString stringWithFormat: @"%d sets", [fetchedResultsController.fetchedObjects count]];