PFObject子类Getter和Setters?

时间:2015-07-19 17:35:23

标签: ios objective-c parse-platform

我有一个简单的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的用法吗?

1 个答案:

答案 0 :(得分:0)

不是一个确切的答案,但它是一个解决方案。

我发现在使用PFObject子类的情况下,使用setValue:forKeyPath比使用Parse自己的包围语法更可靠。即myObject[@"myAttribute"]

如果后者看起来与子类属性不可互换,我发现用setValue:forKeyPath代替它。