没有核心数据在北欧国家取得成果

时间:2014-01-07 01:41:47

标签: ios objective-c core-data internationalization nsfetchrequest

坦率地说,我甚至有点尴尬甚至不敢问这个问题是因为我觉得荒谬而且不能亲自复制它,但是......

在我的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接受的解决方案的评论。

1 个答案:

答案 0 :(得分:1)

这可能是在黑暗中拍摄的。

首先,您检索哪种类型的对象?根据日期?

然后,是的,我会在本地和服务器端都记录。要在本地登录,您可以要求北欧国家/地区的用户向Core Data商店发送反馈(基于电子邮件)或仅发送文件日志(日志将插入正确的点)。后者可以通过CocoaLumberjack实现。

可以在NSScreencast的CocoaLumberjackMailing logs找到此示例。

TestFlight可能是一种替代方式,但我猜你正在制作中。