没有CoreData获取的成果坦白地说,我有点不好意思甚至问这个问题的感知和荒诞不能够亲自重现它,但是......在北欧国家
在我的iOS 7应用程序,我收到很多用户的抱怨,指出应用的某些部分“不起作用”。通过“不工作”,它们意味着由NSFetchRequestDelegate
的方法填充的UITableView
具有零行。关于错误报告的唯一共同点是返回零对象和用户物理位置的具体NSFetchRequests
。用户都在北欧国家(挪威,瑞典,芬兰等)。这可能是一个巧合,或者只是北欧人在发现错误时更加发声,但是这个错误让我感到紧张。
我试过将手机设置为使用Nynorsk作为默认语言,并使用北欧国际单位(我的应用程序可以愉快地支持NSDateFormatter
和朋友)。当我这样做时,该应用可以正常工作,但我身在美国。我甚至在我的应用程序中使用了一个用户帐户,该用户帐户的服务器端数据是在芬兰生成的(字符串中的各种变音符号将与CoreData一起保存),并且它仍然按预期工作。
我看不出有什么异常我我NSFetchedResultsController
的实例,但为了完整起见,这里是一个不返回任何结果:
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil)
return (_fetchedResultsController);
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kTTAEntityCheckinDetail inManagedObjectContext:MOC];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:kTTACheckinDetailBatchSize];
NSSortDescriptor *checkinIDSort = [NSSortDescriptor sortDescriptorWithKey:kTTACheckinDetailAttributeCheckinID ascending:NO];
[fetchRequest setSortDescriptors:@[checkinIDSort]];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:MOC sectionNameKeyPath:@"sectionIdentifier" cacheName:nil];
_fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if ([self.fetchedResultsController performFetch:&error] == NO)
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
return (_fetchedResultsController);
}
这有可能是performFetch
失败,但我用不上到用户的日志。也许我应该检测用户的位置并将其记录到远程服务器上?
解决方案:CoreData未能save
的对象,因为date
场是nil
。此字段未填充,因为NSDateFormatter
的locale
未设置。有关详细信息,请参阅@ flexaddicted接受的解决方案的评论。
这段代码没有问题。我会看看应该填入细胞细节的代码,以及首先创建和保存Core Data条目的代码。 –
尝试将您的语言环境和位置更改为挪威某处 - 这种方式您将模拟挪威用户。也许你正在过滤数据的其他地方,也许有错误的时区使用或错误的日期格式? –
@thom_ek:我已经完成了语言环境的改变,以为我没有模拟挪威的GPS位置。这是我可以尝试的。应该使用'NSDateFormatter'正确格式化,我可以在切换语言环境时进行确认。 – greg