解析 saveInBackgroundWithBlock 附加任务
Parse saveInBackgroundWithBlock additional task
我想做的是在我的应用程序调用 saveInBackgroundWithBlock 时再次保存。我这样做是为了创建一个 "log" 的所有变化以及谁改变了它。我查看了 PFObject.h,但我不确定如何在 Obj-C 中正确编写它,或者我可以在 else/how 中执行此操作,而不是通过并将其添加到每个实例。这是一个好方法吗?还是我应该坚持下去并使用更难的方法?
- (void)saveInBackgroundWithBlock:(nullable PFBooleanResultBlock)block;
你有多种方法来实现这种功能:
- 创建接收 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
另一种选择是使用单例执行相同的操作(如果您为项目创建了一些 REST 客户端单例)
另一个不错的选择是在 PFObject 之上创建类别,并在那里创建一个与 util
的方法完全相同的方法
还有更多选择,但我认为这就足够了..
如果您想尽快完成,请使用实用程序。如果你想用最好的架构来做,那就选择类别。
我想做的是在我的应用程序调用 saveInBackgroundWithBlock 时再次保存。我这样做是为了创建一个 "log" 的所有变化以及谁改变了它。我查看了 PFObject.h,但我不确定如何在 Obj-C 中正确编写它,或者我可以在 else/how 中执行此操作,而不是通过并将其添加到每个实例。这是一个好方法吗?还是我应该坚持下去并使用更难的方法?
- (void)saveInBackgroundWithBlock:(nullable PFBooleanResultBlock)block;
你有多种方法来实现这种功能:
- 创建接收 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
另一种选择是使用单例执行相同的操作(如果您为项目创建了一些 REST 客户端单例)
另一个不错的选择是在 PFObject 之上创建类别,并在那里创建一个与 util
的方法完全相同的方法
还有更多选择,但我认为这就足够了.. 如果您想尽快完成,请使用实用程序。如果你想用最好的架构来做,那就选择类别。