我有一个简单的PFObject
子类设置。 MyPFSubclass
。它看起来像这样:
@interface MyPFSubclass: PFObject <PFSubclassing>
+ (NSString *)parseClassName;
@property (retain) NSString *myString;
@end
#import <Parse/PFObject+Subclass.h>
@implementation MyPFSubclass
@dynamic myString;
+ (NSString *)parseClassName {
return @”MyPFSubclass”;
}
@end
这正如预期的那样有效,直到我今天发现的为止。
我可以设置myString
值并按预期读写,NSLog
显示数据是我设置的数据。
MyPFSubclass *obj = [MyPFSubclass new];
obj.myString = "@hello";
//prints expected value as set above
NSLog(@"%@", obj.myString);
obj[@"myString"] = "@hello";
//prints expected value as set above, again
NSLog(@"%@", obj[@"myString"]);
但是,如果我执行以下操作,则无法获得更改后的结果。
obj[@"myString"] = @"Hello";
//prints original value, not as set above
NSLog(@"%@", obj.myString);
似乎关键名称setter和getter独立于子类setter和getters。我不想要这个!
作为一个例子,我有一个子类视图,它带有一个通用的PFObject
和一个可以获取和设置值的键名。
我该如何解决这个问题?有什么理由我不能混用子类和keyname getter和setter的用法吗?
答案 0 :(得分:0)
不是一个确切的答案,但它是一个解决方案。
我发现在使用PFObject
子类的情况下,使用setValue:forKeyPath
比使用Parse自己的包围语法更可靠。即myObject[@"myAttribute"]
。
如果后者看起来与子类属性不可互换,我发现用setValue:forKeyPath
代替它。