gpt4 book ai didi

objective-c - 在空 NSDictionary 上调用 valueForKey

转载 作者:行者123 更新时间:2023-12-03 17:55:09 24 4
gpt4 key购买 nike

在我的代码中,我在一个空的 NSDictionary 对象上调用了 valueForKey ,并注意到应用程序确实崩溃了。但据我所知,如果将消息发送到空对象,应用程序不会崩溃。有人可以帮我解释一下这里的矛盾吗?非常感谢。

这是我的代码:

if ([[storedManagedObject valueForKey:@"objectId"] isEqualToString:[record valueForKey:@"objectId"]]) {
[self updateManagedObject:[storedRecords objectAtIndex:currentIndex] withRecord:record];
} else {
[self newManagedObjectWithClassName:className forRecord:record];
}

在某些情况下,storedManagedObject 对象为零。

最佳答案

发生崩溃是因为 isEqualToString 在比较之前对值进行类型检查。如果您只使用 isEqual 来代替,则传递 nil 参数时的行为将更像您所期望的:

if ([[storedManagedObject valueForKey:@"objectId"] isEqual:[record valueForKey:@"objectId"]]) {

参见Cocoa documentation :

In all isEqualToType: methods of the Cocoa frameworks, nil is not a valid parameter and implementations of these methods may raise an exception upon receiving a nil. However, for backward compatibility, isEqual: methods of the Cocoa frameworks do accept nil, returning NO.

关于objective-c - 在空 NSDictionary 上调用 valueForKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793178/

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