2015-07-30 2 views
0

Мое приложение выдает исключение NSInvalidArgumentException. Я могу пройти через код, и кажется, что брошено в этом фрагменте кода исключение:App - это внезапное бросание NSInvalidArgumentException

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Rooms"]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rooms" inManagedObjectContext:managedObjectContext]; 
    request.resultType = NSDictionaryResultType; 
    request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"roomName"]]; 

Я не силен в чтении стека, который следующим образом:

2015-07-29 20:30:22.423 HomeSense[55434:2541818] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]' 
*** First throw call stack: 
(
    0 CoreFoundation      0x00000001120cfc65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x0000000111d68bb7 objc_exception_throw + 45 
    2 CoreFoundation      0x0000000111f94478 -[__NSPlaceholderArray initWithObjects:count:] + 360 
    3 CoreFoundation      0x0000000112007b4f +[NSArray arrayWithObject:] + 47 
    4 HomeSense       0x000000010fe0b78a -[HSPaintLogViewController viewDidLoad] + 666 
    5 UIKit        0x00000001107271d0 -[UIViewController loadViewIfRequired] + 738 
    6 UIKit        0x00000001107273ce -[UIViewController view] + 27 
    7 UIKit        0x0000000110cb432d -[_UIFullscreenPresentationController _setPresentedViewController:] + 65 
    8 UIKit        0x0000000110701d69 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 105 
    9 UIKit        0x0000000110733248 -[UIViewController _presentViewController:withAnimationController:completion:] + 1761 
    10 UIKit        0x00000001107356c1 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132 
    11 UIKit        0x00000001107355e5 -[UIViewController presentViewController:animated:completion:] + 229 
    12 UIKit        0x00000001105f7d62 -[UIApplication sendAction:to:from:forEvent:] + 75 
    13 UIKit        0x00000001105f7d62 -[UIApplication sendAction:to:from:forEvent:] + 75 
    14 UIKit        0x000000011070950a -[UIControl _sendActionsForEvents:withEvent:] + 467 
    15 UIKit        0x00000001107088d9 -[UIControl touchesEnded:withEvent:] + 522 
    16 UIKit        0x0000000110644958 -[UIWindow _sendTouchesForEvent:] + 735 
    17 UIKit        0x0000000110645282 -[UIWindow sendEvent:] + 682 
    18 UIKit        0x000000011060b541 -[UIApplication sendEvent:] + 246 
    19 UIKit        0x0000000110618cdc _UIApplicationHandleEventFromQueueEvent + 18265 
    20 UIKit        0x00000001105f359c _UIApplicationHandleEventQueue + 2066 
    21 CoreFoundation      0x0000000112003431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    22 CoreFoundation      0x0000000111ff92fd __CFRunLoopDoSources0 + 269 
    23 CoreFoundation      0x0000000111ff8934 __CFRunLoopRun + 868 
    24 CoreFoundation      0x0000000111ff8366 CFRunLoopRunSpecific + 470 
    25 GraphicsServices     0x0000000114ee7a3e GSEventRunModal + 161 
    26 UIKit        0x00000001105f68c0 UIApplicationMain + 1282 
    27 HomeSense       0x000000010fe06d7f main + 111 
    28 libdyld.dylib      0x0000000113390145 start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

Эта специфическая функциональность работает до сих пор. Я совершенно незнакомы относительно того, что здесь происходит, поэтому любая помощь будет очень признательна.

+0

Becoz u передают нулевой объект. См. Ref http://stackoverflow.com/questions/18864901/nsarraym-insertobjectatindex-object-cannot-be-nil –

ответ

1

Вы пытаетесь сохранить значение nil в массиве. Перед хранением проверьте значение nil как.

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rooms" inManagedObjectContext:managedObjectContext]; 
    request.resultType = NSDictionaryResultType; 
    if([[entity propertiesByName] objectForKey:@"roomName"]!=nil){ 
    request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"roomName"]]; 
    } 
0

Проверьте объект, прежде чем добавить его в массив ... Вы, вероятно, получить ошибку о попытке вставить ноль объект на месте 0.

причина: «* - [NSPlaceholderArray initWithObjects: количество ]: попытка вставки объекта ноль из объектов [0]»***

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

Смежные вопросы