Я получаю ошибки NSCFString, передавая результаты текстовой строки, преобразованной в массив, в метод, который ожидает строки.
У меня такое ощущение, что проблема в том, что что-то не так с преобразованием массива, но я не достаточно умен, чтобы решить это !!!
вот файл .h
@interface RootViewController : UIViewController <ZXingDelegate> {
IBOutlet UITextView *resultsView;
NSString *resultsToDisplay;
IBOutlet UITextField *ItemNo;
NSString *ItemNoToDisplay;
IBOutlet UITextField *VariantCode;
NSString *VariantCodeToDisplay;
IBOutlet UITextField *Description;
NSString *DescriptionToDisplay;
IBOutlet UITextField *Qty;
NSString *QtyToDisplay;
}
@property (nonatomic, retain) IBOutlet UITextView *resultsView;
@property (nonatomic, copy) NSString *resultsToDisplay;
@property (nonatomic, retain) IBOutlet UITextField *ItemNo;
@property (nonatomic,copy) NSString *ItemNoToDisplay;
@property (nonatomic, retain) IBOutlet UITextField *VariantCode;
@property (nonatomic,copy) NSString *VariantCodeToDisplay;
@property (nonatomic, retain) IBOutlet UITextField *Description;
@property (nonatomic,copy) NSString *DescriptionToDisplay;
@property (nonatomic, retain) IBOutlet UITextField *Qty;
@property (nonatomic,copy) NSString *QtyToDisplay;
в .m файле, который я делаю, код основан на тестовом приложении сканирования сканирования штрих-кода Zxing.
Штрих-код, который я сканирую, содержит строку, разделенную;
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result {
self.resultsToDisplay = result;
if (self.isViewLoaded)
{
//This is where the result comes back from the scanner.
//Need to use this to add items to a basket etc
//This is where we can create a new basket screen...
//NSString *myString = @"This is a test";
NSArray *myArray = [result componentsSeparatedByString:@";"];
ItemNoToDisplay = [myArray objectAtIndex:0];
[ItemNo setText:ItemNoToDisplay];
[ItemNo setNeedsDisplay];
VariantCodeToDisplay = [myArray objectAtIndex:1];
[VariantCode setText:VariantCodeToDisplay];
[VariantCode setNeedsDisplay];
DescriptionToDisplay = [myArray objectAtIndex:2];
[Description setText:DescriptionToDisplay];
[Description setNeedsDisplay];
[resultsView setText:resultsToDisplay];
[resultsView setNeedsDisplay];
}
[self dismissModalViewControllerAnimated:NO];
}
Затем у меня есть кнопка на экране, которую пользователь использует для передачи данных простым способом.
-(int)AddItemToBasket:(NSString *)ItemNo:(int)QtyToAdd:(NSString *)ItemDescription:(double)SalesPrice:(NSString *)DisplayPrice;
приложение запускается, пользователь сканирует код, окно заполняется правильно, есть несколько полей для хранения разделенных данных.
когда пользователь нажимает кнопку для вызова метода.
если я использую то, что ожидаю от работы
Utility *sharedUtility = [Utility sharedUtility];
[sharedUtility AddItemToBasket:(ItemNoToDisplay):(1):(DescriptionToDisplay):(0):(@"1")];
но это делает
Utility *sharedUtility = [Utility sharedUtility];
[sharedUtility AddItemToBasket:(ItemNoToDisplay):(1):(Description.text):(0):(@"1")];
При первом вызове всегда возникают ошибки с неправильным доступом или нет ошибки типа NSCFstring.
Кажется, что в LAST-части массива есть какой-то забавный символ, который обрабатывает текстовое поле, а код - нет. Некоторая проблема завершения.
Я обошел эту проблему, используя переменную из текстового поля, но не понимаю, почему я могу напрямую передать значение в текстовое поле, которое я передаю в текстовое поле?
Помощь / Confused ..