如何为PFObject子类自动初始化可变数组/字典? (Parse.com框架) [英] How can I automatically initialize mutable arrays/ dictionaries for my PFObject subclass? (Parse.com framework)
问题描述
我在应用的各个部分中都有以下代码:
I have the following code in various parts of my app:
MyPFObjectSubclass *instance = [MyPFObjectSubclass object];
instance.myMutableArray = [NSMutableArray array];
instance.myMutableDictionary = [NSMutableDictionary array];
我总是 忘记初始化这些类型,后来在尝试setValue:forKey
或addObject
方法时遇到问题.
I am constantly forgetting to initialize these types, and running into problems later when I attempt setValue:forKey
or addObject
methods.
我承认这是一个不错的选择,但我想放心,如果可能的话,请将这些初始化放入+object
中.
It's a nice-to-have, I admit, but I would like to play it safe and roll these initializations into +object
if possible.
推荐答案
我的PFObject子类都大致像这样.我叫[MyPFObject tlObject]创建一个新实例.
My PFObject subclasses all look roughly like this. I call [MyPFObject tlObject] to create a new instance.
@implementation MyPFObject
@dynamic objectUUID;
// Other fields
+ (MyPFObject*) tlObject
{
MyPFObject* obj = [self object];
[obj tlObjectInit];
// Other initializations
return obj;
}
+ (NSString*) parseClassName
{
return @"MyPFObject";
}
+ (PFQuery*) query
{
PFQuery* query = [PFQuery queryWithClassName: [self parseClassName]];
// Add includeKeys here
return query;
}
@end
我在PFObject上有一个类别,其中包括tlObjectInit.字段objectUUID在那里,因此我有一个可以在保存之前唯一标识对象的值.这是必要的,因为有时我会创建相互引用的对象集.在保存之前,不会设置Parse objectID.
I have a category on PFObject that includes tlObjectInit. The field objectUUID is there so that I have a value that can uniquely identify the object BEFORE IT IS SAVED. This is necessary because I sometimes create sets of objects that refer to one another. The Parse objectID is not set until it is saved.
@implementation PFObject (TL)
- (void) tlObjectInit
{
NSString* format = [[self parseClassName] stringByAppendingString: @"-%@"];
[self setObject: [NSUUID uuidStringInFormat: format]
forKey: @"objectUUID"];
}
// Add other initializations here
@end
这篇关于如何为PFObject子类自动初始化可变数组/字典? (Parse.com框架)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!