【发布时间】:2015-07-19 17:35:23
【问题描述】:
我有一个简单的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 和 getter。我不要这个!
例如,我有一个子类视图,它采用通用 PFObject 和可以从中获取和设置值的键名。
我该如何解决这个问题?为什么我不能混合使用子类和键名 getter 和 setter?
【问题讨论】:
-
“键名设置器和获取器”是指键控下标?
-
看我的回答。不确定它是一个完美的解决方案,但肯定不是一个糟糕的解决方案。
-
KVC (
-valueForKey:et al.) 是一种与键控下标相似但不同的技术。但是,在许多情况下,您可以将一个替换为另一个。 -
啊,这可能是我感到困惑的地方。感谢您指出不同之处。
标签: ios objective-c parse-platform