解析 saveInBackgroundWithBlock 附加任务

Parse saveInBackgroundWithBlock additional task

我想做的是在我的应用程序调用 saveInBackgroundWithBlock 时再次保存。我这样做是为了创建一个 "log" 的所有变化以及谁改变了它。我查看了 PFObject.h,但我不确定如何在 Obj-C 中正确编写它,或者我可以在 else/how 中执行此操作,而不是通过并将其添加到每个实例。这是一个好方法吗?还是我应该坚持下去并使用更难的方法?

- (void)saveInBackgroundWithBlock:(nullable PFBooleanResultBlock)block;

你有多种方法来实现这种功能:

  1. 创建接收 PFObject 和 PFBooleanResultBlock 作为参数的 Util class 此 Util class 将在回调中执行对 saveInBackgroundWithBlock 的调用,您可以实现所需的额外保存。最后,您的 Util class 应如下所示:

@interface ParseUtils : NSObject

+ (void)saveParseObject:(PFObject *)object block:(PFBooleanResultBlock)block;

@end

@implementation ParseUtils

+ (void)saveParseObject:(PFObject *)object block:(PFBooleanResultBlock)block {
    
    // if the object is nil or it was not changed return
    if (!object || !object.isDirty) return;
    
    [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
        
        // if no error occured
        if (!error){
            
            // HERE YOU SHOULD CALL YOUR ADDITIONAL SAVE...
            
        }
        
        // handle the callback to the calling class
        if (block){
            block(succeeded,error);
        }
        
    }];
    
}

@end

  1. 另一种选择是使用单例执行相同的操作(如果您为项目创建了一些 REST 客户端单例)

  2. 另一个不错的选择是在 PFObject 之上创建类别,并在那里创建一个与 util

  3. 的方法完全相同的方法

还有更多选择,但我认为这就足够了.. 如果您想尽快完成,请使用实用程序。如果你想用最好的架构来做,那就选择类别。