Я новичок в программировании, и я чувствую себя немного запуганной публикацией, и я застрял. Я не хочу быстрого исправления! Пожалуйста, помогите мне понять это.- [Person componentsSeparatedByString:]: непризнанный селектор, отправленный в экземпляр
Я создал собственный метод с именем, возрастом, высотой и полом. Он вызывается, когда NSMutableArray
добавляет пользовательские объекты в массив. По какой-то причине я не могу вытащить указанные предметы из NSMutableArray
. Скажем, возраст нужно распечатать. Я получаю сообщение об ошибке сказав ...
-[Person componentsSeparatedByString:]:
непризнанного селектора послал к экземпляру
Person.m
- (id)initWithName:(NSString *)n
age:(int)a
height:(float)h
gender:(char)g
{
self = [super init];
if (self) {
self.name = n;
self.age = a;
self.height = h;
self.gender = g;
}
return self;
}
- (NSString *)description
{
NSString *descriptionString = [[NSString alloc] initWithFormat:@"%@, %d, %.1f, %c",
self.name,
self.age,
self.height,
self.gender];
NSLog(@"Description String: %@", descriptionString);
return descriptionString;
}
При добавлении объектов в NSMutableArray они преобразуются в NSString? Как я могу получить возраст людей без названия и высоты целых строк в NSLog?
ViewController.m
[self.people addObject:[[Person alloc] initWithName:@"Jake" age:29 height:73.5 gender:'f']];
[self.people addObject:[[Person alloc] initWithName:@"Jerry" age:24 height:82.3 gender:'m']];
[self.people addObject:[[Person alloc] initWithName:@"Jessica" age:29 height:67.2 gender:'f']];
NSString *mystring1 = [self.people objectAtIndex:0];
NSLog(@"%@", mystring1);
// Works
//NSString *list = @"Norm, 42, 73.2, m";
NSArray *listItems = [self.people[0] componentsSeparatedByString:@", "];
NSLog(@"List Items: %@", listItems[1]);// age
Выход
Description String: Jake, 29, 73.5, f
Jake, 29, 73.5, f
-[Person componentsSeparatedByString:]: unrecognized selector sent to instance
Решено:
Обратите внимание на дополнительные [возраст];
int age = [[self.people objectAtIndex:0]age];
NSLog(@"%d", age);
Нет, они не преобразуются в строку при добавлении их в массив. Что заставляет вас думать, что они делают? – rdelmar
Где хранится 'componentsSeparatedByString'? В документе для NSString. Является ли ваш класс Person подклассом NSString? Нет. Знаете ли вы что-нибудь об объектно-ориентированном программировании? –
Не нужно чувствовать себя запуганным ... Я думаю, что ваш код показывает, что вы, по крайней мере, имеете базовое понимание. Вы просто смущены тем, как получить доступ к свойствам вашего объекта. Нет необходимости преобразовывать ваше Person в строку, –