由於目前沒有saveEvetually也不保存到本地數據存儲的支持,下面是PFObject的一類我使用至少離線救什麼可以保存或返回錯誤:
- (void) dr_saveWithCompletionHandler: (void(^)(NSError* error)) completionBlock {
__block BOOL canSaveEventually = YES;
[[self allKeys] enumerateObjectsUsingBlock:^(NSString* key, NSUInteger idx, BOOL *stop) {
id object = self[key];
if ([object isKindOfClass:[PFFile class]]) {
PFFile* file = (PFFile*) object;
if (!file.url || file.isDirty) {
canSaveEventually = NO;
}
}
}];
void (^localCompletionHandler) (BOOL, NSError*) = ^(BOOL succeeded, NSError *error) {
if (succeeded) {
if (completionBlock) completionBlock(nil);
} else {
if (completionBlock) completionBlock(error);
}
};
if (canSaveEventually) {
[self saveEventually:localCompletionHandler];
} else {
[self saveInBackgroundWithBlock:localCompletionHandler];
}
}
感謝這個想法。保存最終是好的,因爲實際上,即使沒有連接,我的應用程序似乎也可以調用它。目前我只是爲兩個文件中的每一個做一個「saveInBackground」。這看起來更好,在每個文件保存後,我目前正在做一個PFQuery來獲得我想將文件關聯並更新它的對象 - 這樣做一次看起來好多了(並且意味着我可以停止擔心將文件附加到正確的對象!)。謝謝。 – hangzhouharry 2013-02-20 06:24:21