Ответ 1
newName
(@"test"
) уже является NSString. Нет необходимости вызывать -stringValue
, чтобы преобразовать его в строку.
NSString *value = [mo valueForKey:@"shotNumber"];
Я использую этот код для запроса данных ядра и возврата значения ключа, я сохраняю значение следующим образом:
NSString *newName= @"test";
[newShot setValue:newName forKey:@"shotNumber"];
и я запрошу вот так:
NSManagedObject *mo = [items objectAtIndex:0]; // assuming that array is not empty
NSString *value = [[mo valueForKey:@"shotNumber"] stringValue];
NSLog(@"Value : %@",value);
Я сбой с этим сообщением:
[NSCFString stringValue]: непризнанный селектор, отправленный в экземпляр,
Кто-нибудь знает, откуда это будет?
newName
(@"test"
) уже является NSString. Нет необходимости вызывать -stringValue
, чтобы преобразовать его в строку.
NSString *value = [mo valueForKey:@"shotNumber"];
[mo valueForKey: @"shotNumber"]
возвращает строку и NSString
(из которых NSCFString
является деталью реализации) не реализует метод stringValue
.
Учитывая, что NSNumber
реализует stringValue
, я бы сказал, что вы помещаете NSString
в mo
, когда думаете, что ставили NSNumber
.
Значение для ключа @"shotNumber"
, вероятно, имеет тип NSString
, который является только оболочкой для NSCFString
. Что вам нужно сделать, вместо stringValue
использовать метод description
.
Я часто добавляю категорию для NSString для этого:
@interface NSString(JB)
-(NSString *) stringValue;
@end
@implementation NSString(JB)
-(NSString *) stringValue {
return self;
}
@end
Вы можете добавить подобную категорию к другим классам, на которые вы хотите ответить таким образом.
Обратите внимание, что вы также можете получить эту проблему, если пытаетесь получить доступ к строковому свойству объекта, который, по вашему мнению, является чем-то другим, но на самом деле является строкой.
В моем случае я думал, что мой объект Hydration был фактически гидратацией, но, проверяя его класс с помощью isKindOfClass
, я обнаружил, что это был NSString, и понял, что я неправильно использовал его как объект Hydration и что моя проблема больше вверх по цепочке.