簡體   English   中英

PFObject子類,無法識別的選擇器發送到自定義方法的實例

[英]PFObject subclass, unrecognized selector sent to instance for custom method

我有一個PFObject子類SomeClass,向其中添加了一個方法iconImageName

。H

@interface SomeClass : PFObject

@property (nonatomic, strong) NSDictionary * availableAttributes;

@property (nonatomic, strong) NSString * type;

- (NSString *)iconImageName;

@end

.M

@implementation SomeClass

@dynamic availableAttributes;
@dynamic type;

+ (NSString *)parseClassName {
    return NSStringFromClass([self class]);
}

- (NSString *)iconImageName {
    return [NSString stringWithFormat:@"icon-type-%@", self.type];
}

@end

但是打電話之后

[object iconImageName]我得到

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PFObject iconImageName]: unrecognized selector sent to instance 0x174133b00'

我可以確認該對象確實是SomeClass

當我使用類方法時也會發生這種情況

根據文檔,您忽略了一些子類化規則:

要創建PFObject子類:
1.聲明一個符合PFSubclassing協議的子類。
2.實現類方法parseClassName 這是您將傳遞給initWithClassName:的字符串,並使以后所有類名稱的引用都不必要。
3.在.m文件中導入PFObject+Subclass 這實現了PFSubclassing之外的parseClassName所有方法。
4.在解析setApplicationId:clientKey:之前調用[YourClass registerSubclass]

嘗試滿足您班上的這一規則。

例:

// Armor.h
@interface Armor : PFObject<PFSubclassing>
+ (NSString *)parseClassName;
@end

// Armor.m
// Import this header to let Armor know that PFObject privately provides most
// of the methods for PFSubclassing.
#import <Parse/PFObject+Subclass.h>

@implementation Armor
+ (void)load {
  [self registerSubclass];
}

+ (NSString *)parseClassName {
  return @"Armor";
}
@end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM