我正在使用swift编写应用程序,当我在iPhone模拟器上运行测试应用程序时,一切正常,但后来我尝试向右滑动,这是我添加的一个手势,以便转到下一页(查看控制器2)它崩溃并在控制台日志中显示此错误报告。
2014-10-18 12:07:34.400 soundtest[17081:818922] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<soundtest.ViewControllerTwo 0x7f92f1f20090> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key sfdfa.'
*** First throw call stack:
(
0 CoreFoundation 0x00000001067813f5 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x00000001082afbb7 objc_exception_throw + 45
2 CoreFoundation 0x0000000106781039 -[NSException raise] + 9
3 Foundation 0x0000000106b984d3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259
4 CoreFoundation 0x00000001066cb400 -[NSArray makeObjectsPerformSelector:] + 224
5 UIKit 0x00000001072ce97d -[UINib instantiateWithOwner:options:] + 1506
6 UIKit 0x000000010712f698 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
7 UIKit 0x000000010712fc88 -[UIViewController loadView] + 109
8 UIKit 0x000000010712fef9 -[UIViewController loadViewIfRequired] + 75
9 UIKit 0x000000010713038e -[UIViewController view] + 27
10 UIKit 0x00000001076cd83f -[_UIFullscreenPresentationController _setPresentedViewController:] + 65
11 UIKit 0x000000010710bc49 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 105
12 UIKit 0x000000010713c121 -[UIViewController _presentViewController:withAnimationController:completion:] + 1746
13 UIKit 0x000000010713e461 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132
14 UIKit 0x000000010713e385 -[UIViewController presentViewController:animated:completion:] + 229
15 UIKit 0x00000001073bb9d6 _UIGestureRecognizerSendActions + 262
16 UIKit 0x00000001073ba679 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532
17 UIKit 0x00000001073bf296 ___UIGestureRecognizerUpdate_block_invoke662 + 51
18 UIKit 0x00000001073bf192 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254
19 UIKit 0x00000001073b520d _UIGestureRecognizerUpdate + 2796
20 UIKit 0x00000001070520a6 -[UIWindow _sendGesturesForEvent:] + 1041
21 UIKit 0x0000000107052cd3 -[UIWindow sendEvent:] + 667
22 UIKit 0x000000010701fae1 -[UIApplication sendEvent:] + 246
23 UIKit 0x000000010702cbad _UIApplicationHandleEventFromQueueEvent + 17370
24 UIKit 0x0000000107008233 _UIApplicationHandleEventQueue + 1961
25 CoreFoundation 0x00000001066b6ad1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
26 CoreFoundation 0x00000001066ac99d __CFRunLoopDoSources0 + 269
27 CoreFoundation 0x00000001066abfd4 __CFRunLoopRun + 868
28 CoreFoundation 0x00000001066aba06 CFRunLoopRunSpecific + 470
29 GraphicsServices 0x000000010a1699f0 GSEventRunModal + 161
30 UIKit 0x000000010700b550 UIApplicationMain + 1282
31 soundtest 0x000000010624503e top_level_code + 78
32 soundtest 0x000000010624507a main + 42
33 libdyld.dylib 0x000000010ae4a145 start + 1
34 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
答案 0 :(得分:358)
CMYR - “如果您已将按钮连接到不再存在(或已重命名)的IBAction,他也可能发生”
如果您遇到此问题,请确保转到Main.storyboard,右键单击电话号码顶部的黄色方框图标(查看控制器),然后用黄色标记删除插座。
在这样的情况下会发生什么事情,你可能会命名一个动作,然后重命名它。您需要删除旧名称,如果这是唯一的问题将立即开始在SIM中!
答案 1 :(得分:54)
您是否有机会设置OS_ACTIVITY_MODE变量? 要检查是否设置了此变量(并将其关闭),请在Xcode 9中执行以下操作:
Select from Xcode menu Product -> Scheme -> Edit Scheme..
Select the Run scheme and look under Arguments.
If you see the OS_ACTIVITY_MODE variable checked, deselect it
答案 2 :(得分:45)
在Xcode 9和Swift 4中:
打印异常堆栈以了解异常原因:
添加(+)添加异常断点。
选择新的断点,按住Control键并单击“编辑断点”。
答案 3 :(得分:7)
其他解决方案并不适用于我,这是我的。在Swift 2.3 传统模式下运行时,它仅将应用于Xcode 8:
看起来Interface Builder正在尝试重命名应该连接到按钮的方法。
Here's a radar了解更多详情。
解决方案(解决方法)是手动将方法参数名称替换为_
:
@IBAction func editPictureTapped(sender: UIButton) { // not working
print("Tapped")
}
更改为:
@IBAction func editPictureTapped(_: UIButton) { // working OK
print("Tapped")
}
答案 4 :(得分:5)
就我而言,我正在调用委托方法,但未声明该方法。
此错误是通用错误,可能由于多种原因而出现。确保您没有禁用日志以实际查看发生了什么。如果已禁用,请在方案中启用OS_ACTIVITY_MODE 。您可能已禁用它以防止大量不相关的日志,但它们很方便。
您还可以通过添加异常断点po $arg1
来更详细地跟踪原因。正如艾哈迈德·洛特菲(Ahmed-Lotfi)
这是您可以查看的常见清单。
2) Check if you have renamed an IBOutlet and calling it
3) Check if you have renamed a method name or the method doesn't exist
4) Check if you are trying to add or remove any view from hierarchy
5) Check for any missing framework or library
6) Check for any missing flag in the Proejct Setting (-obj) or any other linker flag etc.
答案 5 :(得分:4)
Segue标识符名称也可能是错误的。 例如 -
performSegueWithIdentifier("wrongSegueName", sender: self)
答案 6 :(得分:3)
这开始在Xcode 7上发生,我没有可以删除黄色标记的插座。
对我来说唯一有用的就是在AppDelegate中替换这一行:
[window addSubview:viewController.view];
为:
[window setRootViewController:viewController];
答案 7 :(得分:3)
对我来说,问题出在我的IBAction上,有一个UIButton。
当您按Ctrl + Drag从UIButton创建IBAction时,请务必从Type下拉列表中选择“UIButton”。当您点击UIButton时,默认选择AnyObject会导致应用程序崩溃。
答案 8 :(得分:3)
我的情况有点不同,我试图进入一个UINavigationController
,为我修复的是获得主队列部分。
对于Objective-C:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"SegueName" sender:self];
});
对于Swift 3:
DispatchQueue.main.async { [weak self] in
self?.performSegue(withIdentifier: "SegueName", sender: self)
}
答案 9 :(得分:2)
答案 10 :(得分:1)
我将把我的问题添加到可能的解决方案列表中,以防其他人发生此线程。
TableView单元格标识符。首先请确保您的单元格有标识符。其次,确保在单元格出列时引用该标识符。
答案 11 :(得分:1)
如果您使用的是react native和react-native-firebase,请确保已链接Google-Services.plist文件(https://github.com/invertase/react-native-firebase/issues/313#issuecomment-320435560)
答案 12 :(得分:1)
当我使用可视格式化程序构建约束时,我在其中一个视图中输入了拼写错误时出现了同样的错误。我希望有一天能帮助别人...或者我。
答案 13 :(得分:1)
Swift 4 :
由于UIVisualEffectView api发生了变化,我收到了此错误。在Swift 3中,可以这样做:
myVisuallEffectView.addSubview(someSubview)
但是在Swift 4中我不得不将其更改为:
myVisualEffectView.contentView.addSubview(someSubview)
答案 14 :(得分:1)
我是Xcode的新手,所以我花了几个小时才弄明白这个问题才能加载xls文件。我在那里跟踪了大部分示例代码,但没有一个解决了显示的Xcode错误。
我发现的解决方案是我们需要指定'添加到目标:'勾选要添加的项目,当我们通过拖放到项目中将xls文件导入Xcode时 - &gt;支持文件。
答案 15 :(得分:1)
当我更改连接到其中一个按钮的变量名称时遇到了这个问题。所以记住这一点!
答案 16 :(得分:1)
我在以下两种方式中遇到此错误:
当我推入另一个UIViewController时,我收到了这个错误。
但是,我错误地将UITabBarController
中的另一个类子类化了,并且收到了此错误。
我是如何修复它的?我从UIViewController
继承而且我不再崩溃:)
我不想使用故事板。所以我删除了它。但是我忘记在Project settings 中删除它的引用。我刚刚点击了项目&gt;&gt;一般&gt;&gt;部署信息&gt;&gt;然后我将主界面设置为黑色空间。 (它以前设置为主要)
正如您在两种情况下所看到的那样,您在访问某个存在的对象时会收到错误...
答案 17 :(得分:1)
视图控制器中的按钮可能有超过1个IBAction尝试找出这些按钮并删除控制器中该按钮的所有先前项目并创建新按钮。它将解决您的问题。
答案 18 :(得分:1)
确保您没有动态地将相对约束应用于视图层次结构中尚不存在的视图。
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
Camera.Parameters parameters = camera.getParameters();
parameters.setRotation(270); //set rotation to save the picture
camera.setDisplayOrientation(90);
//set the rotation for preview camera
camera.setParameters(parameters);
this.camera.setPreviewDisplay(holder);
this.camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
在上面的示例中, bottomView 在对其应用相对约束之前已成为视图层次结构的一部分。
答案 19 :(得分:0)
在我的情况下,由于断言失败(由我们的代码设置),XCode感到厌倦并且无法使用此消息启动应用程序。
在另一台设备上运行显示断言失败,我们能够修复,一切都恢复正常。
答案 20 :(得分:0)
如果有人在expo eject
之后来到这里,那么以下步骤将有所帮助。
expo start
pod install
答案 21 :(得分:0)
Xcode 11.2的已知错误可能导致此问题。 Xcode 11.2已被弃用。
下载Xcode 11.2.1解决了该问题。
我也将真实设备更新到了当前的iOS,但我不认为这是问题所在。
答案 22 :(得分:0)
如果您有一个表而忘记将UITableViewDelegate和UITableViewDataSource分配给该类,则会发生这种情况
答案 23 :(得分:0)
另一个可能的原因:
在我的情况下,我有一个xib
并且正在调用Bundle.main.loadNibNamed(...
,此时它正在崩溃。我的所有IBOutlets
和IBActions
似乎都很好。最后我注意到nib
实际上正在加载,但是当我尝试访问第一个(也是唯一的)视图(nib.first
)时,这是无效的。实际上nib.count
返回了一个非常大的整数(max int?),而不是预期的1
。我尝试重新添加视图,但仍然没有运气。
最后,我删除了整个xib
文件并重新开始(但我在剪贴板中保留了一些视图,因此我可以粘贴它们而不是再次重新创建它们。)
这很有用!
答案 24 :(得分:0)
我有两个问题:
1)我的目标没有包含故事板文件中使用的视图控制器。
2)我的故事板大约有3年了,我不得不从头开始重新设置标签栏控制器中的一个视图控制器(它只有一个UITextField,我仍然不知道它为什么不起作用)< / p>
答案 25 :(得分:0)
适用于Swift 2.3
这似乎是Xcode 8和Swift 2.3的一个错误,如果您通过故事板将按钮操作连接到您的代码,请确保Xcode没有重命名该操作,对我而言,它添加了一个 withSender: 在方法的最后,所以我要做的是转到我的代码并重命名方法以匹配Xcode写的那个。
对于任何其他版本,请检查正确答案。
答案 26 :(得分:0)
就我而言,项目Build Settings
包含了Framework Search Paths
和Library Search Paths
的一些不存在的目录。
答案 27 :(得分:0)
在我的情况下,应用程序崩溃了,因为我没有设置故事板的目标成员资格。
答案 28 :(得分:0)
就我而言,它是InterfaceBuilder。我从另一个ViewController复制了一些视图,这些视图搞砸了约束。
在InterfaceBuilder中,我在ViewController上出现红色箭头错误。
在执行期间,应用程序崩溃了。
答案 29 :(得分:0)
对于我的情况, Xcode 8.2.1 ,我在视图控制器中有一个 Map Kit View 。所以我去了
构建阶段&gt;链接二进制文件库
并添加MapKit.framework
,然后就可以了。
我认为这也适用于需要框架的其他视图。
P.S。在iOS 9上运行告诉我,Map Kit View存在问题,而在iOS 10上没有告诉我任何事情!
答案 30 :(得分:0)
只有&#34; drop the armageddon&#34;解决方案对我有用:
答案 31 :(得分:-1)
在我的情况下如果您使用UITableView
,请不要忘记在viewcontroller旁边添加UITableViewDelegate和UITableViewDataSource。 class MenuController: UIViewController, UITableViewDelegate, UITableViewDataSource
将旧项目(用Swift 2.3编写)转换为Swift 3时,需要添加这些关键字。
答案 32 :(得分:-1)
就我而言,它是iPad上的UIAlertView: UIAlertController is Crashed (iPad)。我没有设置sourceView和sourceRect。