Инициализация массива - PullRequest
0 голосов
/ 22 декабря 2010

Следующий код для инициализации массива работает:

NSArray *array = [[NSArray alloc] initWithObjects:@"Toy Story 3",@"Inception",nil];
 self.list = [array sortedArrayUsingSelector:@selector(compare:)];
    [array release];
 [super viewDidLoad];

Но следующий код не работает.Симулятор iPhone завершается, как только я пытаюсь прокрутить табличное представление, которое я использовал для просмотра массива.(Только после того, как я прокручиваю на пустую tableViewCells)

    NSBundle *bundle = [NSBundle mainBundle];
 NSString *plistPath = [bundle pathForResource:@"MovieList" ofType:@"plist"];
 NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
 NSLog([array objectAtIndex:1]);
 self.list = [array sortedArrayUsingSelector:@selector(compare:)];
    [array release];
 [super viewDidLoad];

Это был пример приложения из книги «Начинающая разработка iPhone» Дэйва Марка.В этом примере они инициализировали массив в коде, а я попытался инициализировать его из внешнего файла.

Журнал консоли ::

2010-12-22 20:57:43.772 Nav[2474:40b] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <RootViewController: 0x9908870>.  Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior.  This method will no longer be called in a future release.
2010-12-22 20:58:12.480 Nav[2474:40b] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <DisclosureButtonController: 0x9b32ab0>.  Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior.  This method will no longer be called in a future release.
2010-12-22 20:59:13.299 Nav[2474:40b] -[UIDeviceRGBColor length]: unrecognized selector sent to instance 0x9b3d900
2010-12-22 20:59:13.301 Nav[2474:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDeviceRGBColor length]: unrecognized selector sent to instance 0x9b3d900'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00db2be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00f075c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00db46fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00d24366 ___forwarding___ + 966
    4   CoreFoundation                      0x00d23f22 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x0051a9ca -[UITableViewCellLayoutManager layoutSubviewsOfCell:] + 3424
    6   UIKit                               0x00482e02 -[UITableViewCell layoutSubviews] + 95
    7   QuartzCore                          0x01c70451 -[CALayer layoutSublayers] + 181
    8   QuartzCore                          0x01c7017c CALayerLayoutIfNeeded + 220
    9   QuartzCore                          0x01c6937c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    10  QuartzCore                          0x01c690d0 _ZN2CA11Transaction6commitEv + 292
    11  QuartzCore                          0x01c997d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
    12  CoreFoundation                      0x00d93fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
    13  CoreFoundation                      0x00d290e7 __CFRunLoopDoObservers + 295
    14  CoreFoundation                      0x00cf1bd7 __CFRunLoopRun + 1575
    15  CoreFoundation                      0x00cf1240 CFRunLoopRunSpecific + 208
    16  CoreFoundation                      0x00cf1161 CFRunLoopRunInMode + 97
    17  GraphicsServices                    0x016e7268 GSEventRunModal + 217
    18  GraphicsServices                    0x016e732d GSEventRun + 115
    19  UIKit                               0x002ca42e UIApplicationMain + 1160
    20  Nav                                 0x00002598 main + 102
    21  Nav                                 0x00002529 start + 53
)
terminate called after throwing an instance of 'NSException'

enter code here

Ответы [ 2 ]

2 голосов
/ 22 декабря 2010

Похоже, это идеальная работа для отладчика, не так ли?Почему бы не установить точку останова в первой строке и убедиться, что ничто не является неожиданно нулевым или выходит за пределы, когда вы проходите и проверяете свои переменные?Возможно, было бы полезно также обратить внимание на ошибку, которая, несомненно, регистрируется на консоли?

Учитывая, что вы не упомянули ни строку, на которой она заканчивается, ни какие-либо сообщения журнала, это примерно так же конкретно, как любой может получить.

0 голосов
/ 24 декабря 2010

Первый аргумент NSLog должен быть строкой NSString. Объект, который вы передаете ему, кажется, является частью кластера UIColor. Я предлагаю вам изменить на:

NSLog(@"%@", [array objectAtIndex:1]);

Таким образом, первый аргумент определенно является строкой, и он говорит просто напечатать описание того, какой объект является следующим аргументом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...