私はバージョン 1.6.5 を使用するプロジェクトをparse
行っていますlocalDataStore
。AppDelegate
localDatastore
[Parse enableLocalDatastore];
[Parse setApplicationId:@"AppId" clientKey:@"ClientKey"];
私ViewController
の場合、アプリが初めて実行されるかどうか、サーバーから取得してすべてのオブジェクトをローカルに固定するかどうかという条件があります。localDatastore
それ以外の場合は、コードから取得します
if ([self isAppLaunchingForFirstTime]) {
PFQuery *query = [PFQuery queryWithClassName:@"Category"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if (error) {
[[[UIAlertView alloc]initWithTitle:@"Failed!" message:@"error" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
} else {
if (objects.count) {
[self.categoryArray addObject:objects];
[self.collectionView reloadData];
[PFObject pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Pinned successfully");
}else {
[[[UIAlertView alloc]initWithTitle:@"Error" message:@"Pinning" delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil] show];
}
}];
} else {
[[[UIAlertView alloc]initWithTitle:@"Alert!" message:@"No Records" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
}
}
}];
} else {
PFQuery *query = [PFQuery queryWithClassName:@"Category"];
[query fromLocalDatastore];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if (error) {
[[[UIAlertView alloc]initWithTitle:@"Failed!" message:error.description delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
} else {
if (objects.count) {
[self.categoryArray addObject:objects];
[self.collectionView reloadData];
} else {
[[[UIAlertView alloc]initWithTitle:@"Alert!" message:@"No Records" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
}
}
}];
}
問題は、最初のアプリが正常に実行され、collectionView に取得されたオブジェクトが表示されるのに対し、2 回目からはlocalDataStore
、ネットワーク接続を確認し、各オブジェクトを取得するために 5 回再試行するため、取得中にバックグラウンド タスクが長時間実行されます。ネットワークlocalDataStore
接続が必要です。
コンソールのエラーログ : これは、7 つのオブジェクトを取得するために 36 回繰り返し発生したエラーです。
[Error]: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo=0x1e56e2a0
{NSErrorFailingURLStringKey=https://api.parse.com/1/classes/Category,
NSErrorFailingURLKey=https://api.parse.com/1/classes/Category,
NSLocalizedDescription=The Internet connection appears to be offline.,
NSUnderlyingError=0x1e57fae0 "The Internet connection appears to be offline."}
(Code: 100, Version: 1.6.5)