【问题标题】:PFObject Subclass Getters and Setters?PFObject 子类获取器和设置器?
【发布时间】: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


【解决方案1】:

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

我发现在使用PFObject子类的场景下,使用setValue:forKeyPath比使用Parse自带的括号语法更可靠。即myObject[@"myAttribute"]

如果后者似乎与子类属性不可互换,我发现用 setValue:forKeyPath 替换它是可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多