沒有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