15

我正在开发一个简单的游戏,但在加载特定的 UIViewController(称为SPSwipes.swift时遇到了问题。On the screen, there are three buttons : 5, 10, and 25. When one is picked, a variable is set in that scene and the player moves on to the main Game: GameScene.swift .

据我所知变量在 GameScene 中被识别,但是当我在模拟器中打开SPSwipes 视图时出现“NSUnknownKeyException”错误。这是通过 segue完成的。这是更详细的错误:

2014-11-09 15:32:43.718 Swipe Racer[2644:1620056] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Swipe_Racer.SPSwipes 0x7fbf52d461b0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key fiveSwipes.'
*** First throw call stack:
(
0   CoreFoundation                      0x000000010c021f35 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010dd1bbb7 objc_exception_throw + 45
2   CoreFoundation                      0x000000010c021b79 -[NSException raise] + 9
3   Foundation                          0x000000010c4397b3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259
4   CoreFoundation                      0x000000010bf6be80 -[NSArray makeObjectsPerformSelector:] + 224
5   UIKit                               0x000000010cd28c7d -[UINib instantiateWithOwner:options:] + 1506
6   UIKit                               0x000000010cb87f98 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
7   UIKit                               0x000000010cb88588 -[UIViewController loadView] + 109
8   UIKit                               0x000000010cb887f9 -[UIViewController loadViewIfRequired] + 75
9   UIKit                               0x000000010cb88c8e -[UIViewController view] + 27
10  UIKit                               0x000000010caa7ca9 -[UIWindow addRootViewControllerViewIfPossible] + 58
11  UIKit                               0x000000010caa8041 -[UIWindow _setHidden:forced:] + 247
12  UIKit                               0x000000010cab472c -[UIWindow makeKeyAndVisible] + 42
13  UIKit                               0x000000010ca5f061 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2628
14  UIKit                               0x000000010ca61d2c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1350
15  UIKit                               0x000000010ca60bf2 -[UIApplication workspaceDidEndTransaction:] + 179
16  FrontBoardServices                  0x000000011383b2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
17  CoreFoundation                      0x000000010bf5753c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
18  CoreFoundation                      0x000000010bf4d285 __CFRunLoopDoBlocks + 341
19  CoreFoundation                      0x000000010bf4d045 __CFRunLoopRun + 2389
20  CoreFoundation                      0x000000010bf4c486 CFRunLoopRunSpecific + 470
21  UIKit                               0x000000010ca60669 -[UIApplication _run] + 413
22  UIKit                               0x000000010ca63420 UIApplicationMain + 1282
23  Swipe Racer                         0x000000010be380de top_level_code + 78
24  Swipe Racer                         0x000000010be3811a main + 42
25  libdyld.dylib                       0x000000010e507145 start + 1
26  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

如您所见,我的第一个变量 FiveSwipes 存在问题想其他两个变量也会有错误)。't his class is not key value coding-compliant for the key FiveSwipes ' 是什么意思?我应该如何修复它?

我的SPSwipes.swift文件:

class SPSwipes: UIViewController {

var no_of_swipes = 0

@IBAction func fiveSwipes(sender: AnyObject) {
    no_of_swipes = 5

//and so on

}

先感谢您,

将要

4

5 回答 5

30

问题是该按钮与许多 IBAction 相关联——其中三个不存在。我右键单击Interface Builder中的按钮并删除了旧的和不相关的链接,从而解决了问题。

于 2014-11-24T15:57:06.967 回答
3

对我来说,这是因为我有多个视图连接到不存在的 IBOutlets

要了解如何找出:

1-单击整个视图控制器

在此处输入图像描述

2-转到:显示连接器检查器

在此处输入图像描述

在那里你会找到所有未连接的插座

于 2017-09-05T01:02:46.503 回答
2

尝试根据您在 Interface Builder 中设置的内容加载视图时发生异常。它正在寻找fiveSwipes而不是找到它。如果您编辑了代码并忘记更新 IB 中的连接,就会发生这种情况。

您是否在 IB 中与fiveSwipes不是此功能的东西建立了联系?也许一个变量叫做fiveSwipes? 解决问题的方法是在 IB 中找到连接不良的元素并清除该连接。

于 2014-11-09T16:21:38.910 回答
1

这是一个老问题,其他答案无助于解决我的问题,所以想在这里留下这个答案可能会帮助其他人。

我们的应用程序包含多个“目标”,现在恰好 ViewController 指向特定目标,并且仅在该目标上此 ViewController 有效。在其他目标上运行时,应用程序会因此错误而崩溃。

因此,对于那些有多个“目标”的人,请务必检查“身份检查器”中的“模块”,并确保选中“从目标继承模块”。

截屏

于 2018-01-25T05:57:56.373 回答
0

另一个可能的原因是,如果您使用 nibName:bundle: 初始化控制器,并且您传递了错误的 nib 名称 - 其他一些不适合该控制器的 nib。最终结果是一样的,你可能会有一堆在控制器和笔尖之间不匹配的@IBOutlets。

于 2016-05-26T21:38:40.287 回答