Вопрос

У меня ошибка - [NSCFString stringValue]: нераспознанный селектор отправляется экземпляру 0x1578c при выполнении этого кода Я не понимаю что я делаю не так имя NSString

self.searchValues= [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
   [searchValues addObject: [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Name",@"Label",self.name,@"Value",nil]];
NSLog(@"Array value : %s",[[[searchValues objectAtIndex:0] objectForKey:@"Value"] stringValue]);
Это было полезно?

Решение

Во-первых, вы можете удалить сообщение [... stringValue]. Не обязательно, этот объект уже является строкой. Во-вторых, вы должны использовать% @ вместо% s для объектов NSString.

Примечание:% @ вообще работает для любого объекта. Попробуйте

NSLog(@"Array: %@", searchValues);

Поверь мне, стоит попробовать.

Другие советы

Нет " stringValue " метод на NSString, таким образом, ошибка.

Если вы действительно хотите получить значение в виде C-строки, вам нужен метод UTF8String. Однако для вашего случая регистрации вы должны просто изменить% s на% @ и напрямую зарегистрировать объект NSString.

В этом случае нет необходимости использовать stringValue ( edit: , как сообщают другие, это действительно ошибка, потому что NSString не имеет метода stringValue ).

Объект, который выходит из вашего словаря, уже является NSString . Что вы должны сделать, это разрешить функции NSLog обрабатывать объект как правильный объект какао. Код для этого - % @ , а не % s , так как % s предназначен для строк в стиле C.

Вот как это должно выглядеть:

self.searchValues = [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
{
    [searchValues addObject: [NSMutableDictionary
           dictionaryWithObjectsAndKeys:@"Name", @"Label",
                                        self.name,@"Value",
                                       nil]];

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0]
                                 objectForKey:@"Value"]);
}

Если у вас есть свойство для переменной name, тогда используйте self.name при выполнении какой-либо операции с ним, иначе нет смысла объявлять свойство.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top