gpt4 book ai didi

ios - 为什么我不能捕获这个 Swift 异常?

转载 作者:行者123 更新时间:2023-11-28 11:13:48 26 4
gpt4 key购买 nike

大概我一定是在这里做错了什么,但是这段代码似乎不起作用,我认为它应该。谁能发现我做错了什么或者这可能是编译器错误?

异常确实会被抛出,但不会被捕获

enter image description here

根据文档,引发了一个异常:

Declaration
SWIFT
func valueForKey(_ key: String) -> AnyObject?
OBJECTIVE-C
- (id _Nullable)valueForKey:(NSString * _Nonnull)key
Parameters
key
The name of one of the receiver's properties.
Return Value
The value of the property specified by key.

Discussion
If key is not a property defined by the model, the method raises an exception. This method is overridden by NSManagedObject to access the managed object’s generic dictionary storage unless the receiver’s class explicitly provides key-value coding compliant accessor methods for key.

最佳答案

因为 valueForKey 不会抛出任何异常。

看签名

func valueForKey(_ key: String) -> AnyObject?

它可以选择返回 AnyObject,因此如果您要查找的值不存在,它将简单地返回 nil

就这样

if let name = managedObject.valueForKey("displayName") {
...
} else if let name = managedObject.valueForKey("name") {
...
}

底线,在 swift 中,只有当函数被明确标记为抛出异常时,您才能使用 try。编译器会为您检查这一点,但您也可以查看函数签名以了解它是否抛出。

如果 valueForKey 抛出异常,其函数签名如下所示:

func valueForKey(_ key: String) throws -> AnyObject?

关于ios - 为什么我不能捕获这个 Swift 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33167094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com