Я пытаюсь создать подкласс NSString, чтобы дать ему свойство, которое является другим NSString. Независимо от того, что я пытаюсь использовать с @synthesize или @dynamic или вручную кодировать свои сеттеры и геттеры, я продолжаю получать эту ошибку «неопознанный селектор, отправленный в экземпляр» при компиляции.
Я знаю, что на этот вопрос, вероятно, уже был дан ответ, но, просмотрев около 15 других вопросов о «непризнанном селекторе» на этом сайте, я все еще в растерянности. Извините, я начал программировать ОЧЕНЬ недавно, поэтому, вероятно, просто упустил что-то чрезвычайно простое.
Фуригана.ч
@interface Furigana : NSString
@property (strong, nonatomic) NSString *forKanji;
-(void)setForKanji:(NSString *)forKanji; //fails the same with or without this line
@end
Фуригана.м
#import "Furigana.h"
@implementation Furigana
@synthesize forKanji = _forKanji;
//@dynamic forKanji; tried this
-(NSString *)forKanji { //also fails when custom setter/getters are left out
if(!_forKanji) _forKanji = [[NSString alloc] init];
return _forKanji;
}
-(void)setForKanji:(NSString *)forKanji {
if(!_forKanji) _forKanji = [[NSString alloc] init];
_forKanji = forKanji;
}
@end
Рейбун.м
#import "Furigana.h"
-(NSArray *)parseFurigana:(NSArray *)unparsedData {
NSMutableArray *furigana = [[NSMutableArray alloc] init]; //of Furigana
for(unsigned int x = 0; x < [unparsedData count]; x++){
NSArray *components = [[NSArray alloc] init];
components = [[unparsedData objectAtIndex:x] componentsSeparatedByString:@":"];
Furigana *newFurigana = [[Furigana alloc] init];
newFurigana = [components objectAtIndex:1];
NSLog(@"stored string: %@",newFurigana); //so far so good
newFurigana.forKanji = [components objectAtIndex:0]; //crash
//[newFurigana setForKanji:[components objectAtIndex:0]]; //this fails too
[furigana addObject:newFurigana];
}
return furigana;
}