在我的iOS 7应用程序中,我收到了很多用户的抱怨,称应用程序的某些部分“无效”。通过“不工作”,它们意味着由UITableView
方法填充的NSFetchRequestDelegate
具有零行。关于错误报告,唯一的共同点是返回零对象的特定NSFetchRequests
和用户的物理位置。用户都在北欧国家(挪威,Sweeden,芬兰等)。这可能是巧合,或者只是当有一个错误时北欧人更有声音,但这个错误让我感到紧张。
我尝试将手机设置为使用Nynorsk作为默认语言并使用Nordic国际单位(我的应用程序很乐意支持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
可能失败,但我无法访问用户的日志。也许我应该检测用户的位置并将其记录到远程服务器上?
解决方案:由于save
字段为date
,CoreData无法nil
个对象。由于未设置locale
的{{1}},因此未填充此字段。有关详细信息,请参阅@ flexaddicted接受的解决方案的评论。
答案 0 :(得分:1)
这可能是在黑暗中拍摄的。
首先,您检索哪种类型的对象?根据日期?
然后,是的,我会在本地和服务器端都记录。要在本地登录,您可以要求北欧国家/地区的用户向Core Data商店发送反馈(基于电子邮件)或仅发送文件日志(日志将插入正确的点)。后者可以通过CocoaLumberjack实现。
可以在NSScreencast的CocoaLumberjack和Mailing logs找到此示例。
TestFlight可能是一种替代方式,但我猜你正在制作中。