Схожу с ума с UITextField - PullRequest
       34

Схожу с ума с UITextField

0 голосов
/ 28 ноября 2011

Я буквально схожу с ума от этих шести строк кода.

Примечание: nome и prezzo - это 2 текстовых поля

NSString *itemName = (NSString *) [rowVals objectForKey:@"name"];
NSString *itemPrice = (NSString *) [rowVals objectForKey:@"price"];
nome.text = itemName;
nome.userInteractionEnabled = YES;
prezzo.text = itemPrice;
prezzo.userInteractionEnabled = YES;

Не знаю, почему, когда itemPrice копируется на одну из этих меток, программа переходит в SIGABRT. Вместо этого, если я пытаюсь прочитать содержимое с NSLog(@"%@",itemPrice);, оно возвращает точное значение, так что это означает, что это действительное NSString.

Единственное решение, которое я нашел, это прохождение через NSNumber:

NSNumber *itemPrice = (NSNumber *) [rowVals objectForKey:@"price"];
prezzo.text = [[NSString alloc] initWithFormat:@"%@", itemPrice];

Есть и другой способ напрямую использовать NSString?

Ответы [ 4 ]

3 голосов
/ 28 ноября 2011

Как насчет этого:

NSString *itemPrice = [[rowVal objectForKey:@"price"] stringValue];
prezzo.text = itemPrice;
3 голосов
/ 28 ноября 2011

Вероятно, значение в поле @ "price" - это NSNumber, а не NSString.Метод NSLog все равно даст правильный результат, поскольку% @ используется для любого подкласса NSObject, а не только для NSString.

0 голосов
/ 28 ноября 2011

Возможно, вы храните объект NSNumber в NSDictionary вместо NSString.

Возможны 2 способа: один - преобразовать NSNumber в NSString при добавлении его в словарь, или другой способ - преобразовать NSNumber вNSString при назначении его «itemName».

вы можете выполнить преобразование для второго параметра, например:

NSString *itemPrice = [[rowVals objectForKey:@"price"]stringValue];
0 голосов
/ 28 ноября 2011

Возможно, проблема в типе объекта, возвращаемом [rowVals objectForKey:@"price"]. Когда вы помещаете приведение (NSString *) перед вызовом метода, вы сообщаете компилятору, какой тип объекта возвращается, но не конвертируете его в NSString. Используемая ниже строка преобразует NSNumber (или любой другой объект) в строку: [[NSString alloc] initWithFormat:@"%@", itemPrice]

...