#iphone
#iPhone
Вопрос:
Новинка в iOS, вот вопрос:
Я использую xcode 4.0.2 iso-4.3.2
. Здесь у меня есть таблица, и я создаю один изменяемый массив, например
mainarray=[[NSMutableArray alloc]initWithObjects:@"Hi",@"Hello"nil];
и отправляем это значение в.Метод делегирования таблицы, подобный
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
здесь приходит значение, но как только я динамически отправляю значение в mainarray, например
mainarray=[[NSMutableArray alloc]initWithObjects:[dataarray valueForKey:@"first_name"],nil]; or
[mainarray addobject:[dataarray valueForKey:@"first_name"]]
и отправка этого значения mainarray в cell.textlabel.text
затем моя программа завершается и отправляет это сообщение об ошибке.
2011-05-11 10:29:10.346 picture:vide[742:207] -[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x4e85200
2011-05-11 10:29:10.348 picture:vide[742:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x4e85200'
*** Call stack at first throw:
(
0 CoreFoundation 0x00ddb5a9 __exceptionPreprocess 185
1 libobjc.A.dylib 0x00f2f313 objc_exception_throw 44
2 CoreFoundation 0x00ddd0bb -[NSObject(NSObject) doesNotRecognizeSelector:] 187
3 CoreFoundation 0x00d4c966 ___forwarding___ 966
4 CoreFoundation 0x00d4c522 _CF_forwarding_prep_0 50
5 UIKit 0x003ecafc -[UILabel setText:] 72
6 picture:vide 0x000050c9 -[VideoChatController1 tableView:cellForRowAtIndexPath:] 376
7 UIKit 0x00340b98 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] 634
8 UIKit 0x003364cc -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] 75
9 UIKit 0x0034b8cc -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] 1561
10 UIKit 0x0034390c -[UITableView layoutSubviews] 242
11 QuartzCore 0x01d7ba5a -[CALayer layoutSublayers] 181
12 QuartzCore 0x01d7dddc CALayerLayoutIfNeeded 220
13 QuartzCore 0x01d230b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE 310
14 QuartzCore 0x01d24294 _ZN2CA11Transaction6commitEv 292
15 QuartzCore 0x01d2446d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv 99
16 CoreFoundation 0x00dbc89b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 27
17 CoreFoundation 0x00d516e7 __CFRunLoopDoObservers 295
18 CoreFoundation 0x00d1a1d7 __CFRunLoopRun 1575
19 CoreFoundation 0x00d19840 CFRunLoopRunSpecific 208
20 CoreFoundation 0x00d19761 CFRunLoopRunInMode 97
21 GraphicsServices 0x017321c4 GSEventRunModal 217
22 GraphicsServices 0x01732289 GSEventRun 115
23 UIKit 0x002d9c93 UIApplicationMain 1160
24 picture:vide 0x00002910 main 102
25 picture:vide 0x000028a1 start 53
)
Пожалуйста, помогите.
Комментарии:
1. Пожалуйста, проверьте, что вы называете [dataarray valueForKey:@»first_name»] имя массива данных предполагает, что это массив, но я предполагаю, что это словарь. Соглашения об именовании существуют не просто так.
Ответ №1:
Здесь вы получаете этот завершающий журнал, потому что
dataArray — это NSArray, который вы не можете вызвать [dataarray valueForKey:@"first_name"]
, потому что это не восстановлено для NSArray
позже вы можете использовать что-то вроде этого
[[dataarray objectAtIndex:index] valueForKey:@"first_name"]
Комментарии:
1. он не говорит, что dataArray — это NSArray. Я думаю, это просто его неправильное название… Хороший момент, хотя, я думаю, он получил бы предупреждение, если бы это был массив
2. @7KV7 яп, он выдает предупреждение, но не выдает никаких ошибок, только такого рода журнал сбоев при запуске. Я часто сталкиваюсь с этой проблемой, когда забываю правильно обращаться к такого рода данным из массива
Ответ №2:
[__NSArrayI isEqualToString:]:
проблема в том. Вы используете isEqualToString:
где-то для массива. Проверьте это. Это метод NSString
Ответ №3:
Инициализация массива была неправильной.
Следующая строка
mainarray=[[NSMutableArray alloc]initWithObjects:@"Hi",@"Hello"nil];
должно быть исправлено как
mainarray=[[NSMutableArray alloc]initWithObjects:@"Hi",@"Hello" , nil];
Пожалуйста, обратите внимание на новую запятую между @»Hello» и нулем