Изменение имени ViewController вызывает сбой приложения? - PullRequest
2 голосов
/ 29 июня 2011

Я создал новое приложение iPhone на основе View в XCode (4.0), используя iOS SDK 4.3. Затем я изменил имя ViewController с MyProjectNameViewController на LoginViewController. Я также заменил каждый найденный экземпляр MyProjectNameViewController на LoginViewController, и дважды проверил все ссылки в конструкторе интерфейсов.

Тем не менее, когда я пытаюсь запустить приложение, оно вылетает:

2011-06-29 10:21:36.927 Monitoring[12580:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<LoginViewController 0x4b26bf0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key password.'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00dc05a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00f14313 objc_exception_throw + 44
    2   CoreFoundation                      0x00dc04e1 -[NSException raise] + 17
    3   Foundation                          0x00792677 _NSSetUsingKeyValueSetter + 135
    4   Foundation                          0x007925e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
    5   UIKit                               0x0020e30c -[UIRuntimeOutletConnection connect] + 112
    6   CoreFoundation                      0x00d368cf -[NSArray makeObjectsPerformSelector:] + 239
    7   UIKit                               0x0020cd23 -[UINib instantiateWithOwner:options:] + 1041
    8   UIKit                               0x0020eab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
    9   UIKit                               0x000c4628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
    10  UIKit                               0x000c2134 -[UIViewController loadView] + 120
    11  UIKit                               0x000c200e -[UIViewController view] + 56
    12  UIKit                               0x00035d42 -[UIWindow addRootViewControllerViewIfPossible] + 51
    13  MyProjectName                       0x000022c7 -[MyProjectNameAppDelegate application:didFinishLaunchingWithOptions:] + 135
    14  UIKit                               0x00012c89 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163
    15  UIKit                               0x00014d88 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    16  UIKit                               0x0001f617 -[UIApplication handleEvent:withNewEvent:] + 1533
    17  UIKit                               0x00017abf -[UIApplication sendEvent:] + 71
    18  UIKit                               0x0001cf2e _UIApplicationHandleEvent + 7576
    19  GraphicsServices                    0x00ff9992 PurpleEventCallback + 1550
    20  CoreFoundation                      0x00da1944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    21  CoreFoundation                      0x00d01cf7 __CFRunLoopDoSource1 + 215
    22  CoreFoundation                      0x00cfef83 __CFRunLoopRun + 979
    23  CoreFoundation                      0x00cfe840 CFRunLoopRunSpecific + 208
    24  CoreFoundation                      0x00cfe761 CFRunLoopRunInMode + 97
    25  UIKit                               0x000147d2 -[UIApplication _run] + 623
    26  UIKit                               0x00020c93 UIApplicationMain + 1160
    27  MyProjectName                       0x00002209 main + 121
    28  MyProjectName                       0x00002185 start + 53

Что мне нужно сделать, чтобы это исправить?

Ответы [ 5 ]

3 голосов
/ 29 июня 2011

Оказывается, мне нужно было удалить приложение из iPhone Simulator и загрузить его снова.Разве это не должно делать это автоматически ???

3 голосов
/ 29 июня 2011

Вы также переименовали классы в ваших nibs / xibs?

Сообщение об ошибке говорит вам, что что-то хочет получить доступ к password через KVC, и объект, к которому он вызывается (LoginViewController)не обеспечивает KVC-совместимый доступ к password.Вы возились с password геттерами / сеттерами?

1 голос
/ 29 июня 2011

Я рекомендую вам сделать Build / Clean All Targets, удалить каталог / Build / в вашем проекте, а затем повторно запустить проект. Если он все еще падает, значит, вы что-то упустили.

0 голосов
/ 21 августа 2014

Просто получите это следующим образом: 1) Выберите имя, которое вы хотите изменить: MyProjectNameViewController 2) Правка -> Refactor, заполните « LoginViewController ».Но обратите внимание, если на storyboardID может быть изменено вручную, если вы установите его так же, как контроллер представления ранее.

0 голосов
/ 29 июня 2011

У вас неисправный выход. Перо ищет что-то, чтобы связать «пароль», но в вашем контроллере нет соответствующего свойства.

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