解析saveInBackgroundWithBlock附加任务

时间:2016-08-01 14:10:33

标签: swift parse-platform pfobject bftask

我想要做的是在我的应用程序中随时调用saveInBackgroundWithBlock导致另一次保存。我这样做是为了创建一个" log"一切都在改变,谁改变了。我查看了PFObject.h但是我不知道如何在Obj-C中正确地写这个或者除了经过并将其添加到每个实例之外我还能做什么。这是一个很好的方法吗?或者我应该坚持下去并使用更难的方式?

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

1 个答案:

答案 0 :(得分:0)

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

  1. 创建接收PFObject和PFBooleanResultBlock作为参数的Util类,此Util类将在回调中执行对saveInBackgroundWithBlock的调用,您可以实现所需的额外保存。最后,您的Util类应如下所示:
  2. 
    
    @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. 还有更多选择,但我认为它已经足够了...... 如果您想尽快使用实用程序。如果你想用最好的架构来做,那么请选择类别。