Parse localDatastore をテストしていますが、新しいサーバー PFQuery の後でローカル データストアを更新するのに苦労しています。
PFQuery は正常に動作し、配列をローカル データストアに正常に固定しているようです。サーバー上の配列の内容を変更すると、サーバー PFQuery は更新された配列を取得しますが、ローカル データストアは更新されないようです。
- (void)viewDidLoad {
[super viewDidLoad];
// Query Parse
PFQuery *query = [PFQuery queryWithClassName:@"contacts"];
NSArray *objects = [query findObjects];
[PFObject pinAllInBackground:objects block:^(BOOL succeeded, NSError *error) {
if(succeeded) {
NSLog(@"Successfully retrieved %lu records from Parse.", (unsigned long)objects.count);
} else if (error) {
NSLog(@"Error");
}
}];
}
次に、UIButton を使用して、ローカル データストアの内容をコンソールに記録します。
-(IBAction)showDatastore {
// Query the Local Datastore
PFQuery *query = [PFQuery queryWithClassName:@"contacts"];
[query fromLocalDatastore];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSLog(@"Successfully retrieved %lu contacts from Datastore.", (unsigned long)objects.count);
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}
私のサンプルでは、元の配列には 15 個のオブジェクトがあります。各配列の最初のカウントは両方とも 15 です。その後、サーバー配列からオブジェクトを削除すると、最初の PFQuery カウントは 14 ですが、ローカル データストア カウントは 15 のままです。
パースのドキュメントには次のように記載されています。
オブジェクトが固定されると、新しいデータをフェッチまたは保存してオブジェクトを更新するたびに、ローカル データストア内のコピーが自動的に更新されます。
しかし、そうではないようです...少なくとも、この推奨コードではそうではありません。足りないものはありますか?