Swift - NSInvalidArgumentException - 非常简单的测试项目仍然失败

时间:2015-07-16 16:18:12

标签: ios iphone xcode swift

我要做的就是检查按钮是否被按下。它适用于另一个视图,使用viewcontroller.swift的视图,但当我更改控制器类名称时,它停止工作。我确保更改故事板本身的类名。我已经看到其他帖子有相同的错误,但他们总是试图做一些更复杂的事情。

import UIKit
import Alamofire
import SwiftyJSON

class LoginView: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func loginPress(sender: AnyObject) {
        print("text")
    }
}

这是日志。

2015-07-16 09:38:18.468 mybox[44242:318055] -[mybox.LoginView LoginButton:]: unrecognized selector sent to instance 0x7ffebb032230
2015-07-16 09:38:18.479 mybox[44242:318055] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[mybox.LoginView LoginButton:]: unrecognized selector sent to instance 0x7ffebb032230'
*** First throw call stack:
(
0   CoreFoundation                      0x0000000106c8fc65 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x00000001087fabb7 objc_exception_throw + 45
2   CoreFoundation                      0x0000000106c970ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x0000000106bed13c ___forwarding___ + 988
4   CoreFoundation                      0x0000000106beccd8 _CF_forwarding_prep_0 + 120
5   UIKit                               0x000000010752fd62 -[UIApplication sendAction:to:from:forEvent:] + 75
6   UIKit                               0x000000010764150a -[UIControl _sendActionsForEvents:withEvent:] + 467
7   UIKit                               0x00000001076408d9 -[UIControl touchesEnded:withEvent:] + 522
8   UIKit                               0x000000010757c958 -[UIWindow _sendTouchesForEvent:] + 735
9   UIKit                               0x000000010757d282 -[UIWindow sendEvent:] + 682
10  UIKit                               0x0000000107543541 -[UIApplication sendEvent:] + 246
11  UIKit                               0x0000000107550cdc _UIApplicationHandleEventFromQueueEvent + 18265
12  UIKit                               0x000000010752b59c _UIApplicationHandleEventQueue + 2066
13  CoreFoundation                      0x0000000106bc3431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
14  CoreFoundation                      0x0000000106bb92fd __CFRunLoopDoSources0 + 269
15  CoreFoundation                      0x0000000106bb8934 __CFRunLoopRun + 868
16  CoreFoundation                      0x0000000106bb8366 CFRunLoopRunSpecific + 470
17  GraphicsServices                    0x000000010d729a3e GSEventRunModal + 161
18  UIKit                               0x000000010752e8c0 UIApplicationMain + 1282
19  mybox                               0x0000000106950d87 main + 135
20  libdyld.dylib                       0x0000000109ce1145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

以下是一些可能有用的屏幕截图 Proof the class is named correctly

enter image description here

3 个答案:

答案 0 :(得分:0)

将您的方法重命名为LoginButton

答案 1 :(得分:0)

我明白了。今天早些时候我还没有设置自定义控制器类。我更改了类,但也删除了方法而没有删除操作。当我做了一个新的动作时,之前的动作仍然与按钮绑定并导致它没有任何东西可以调用。谢谢@Justa。

答案 2 :(得分:0)

我认为您编写方法然后使用storyboard中的按钮进行设置,然后重命名您的方法名称。所以,当你点击按钮时,编译器没有在课堂上找到旧的命名方法,这就是为什么它崩溃了。

您使用按钮连接“ LoginButton ”此方法。但是该方法在类中不存在,因此在类文件中更改方法名称或从storyboard中删除方法链接,然后再次使用“ loginPress ”方法进行设置。

简而言之,请将您的方法名称替换为“ LoginButton

我认为我的描述会帮助你清楚你做错了什么。希望它会对你有所帮助。