gpt4 book ai didi

iphone - xcode 中的 NSString 还是 NSCFString?

转载 作者:行者123 更新时间:2023-12-03 21:02:32 25 4
gpt4 key购买 nike

我正在 NSString 中获取一个 NSMutabledictionary 对象,如下所示:

NSString *state=[d valueForKey:@"State"];

现在有时状态可能为空,有时填充文本。所以我比较它。虽然比较状态有时变成 NSString,有时变成 NSCFString..所以无法获得所需的结果..

if([state isEqualToString@""])
{
//do something
}
else
{
//do something
}

因此在比较时有时会返回 nil。因此立即跳到 else block 。

我需要一种标准方法来比较状态是否为空,无论它是 NSString 还是 NSCFString ...

我该怎么做?

最佳答案

如果您无法获得所需的结果,我可以向您保证,这不是因为您获得的是 NSCFString 而不是 NSString

在 Objective-C 中,框架充满了簇类;也就是说,您在文档中看到一个类,实际上,它只是一个接口(interface)。该框架有自己的这些类的实现。例如,正如您所指出的,NSString 类通常由 NSCFString 类表示;还有其他一些,例如 NSConstantStringNSPathStore2,它们实际上是 NSString 的子类,并且其行为就像您所期望的那样。

据我所知,你的问题...

Now sometimes state may be null and sometimes filled with text.

...在 Objective-C 中,在 nil 上调用方法是合法的。 (Nil 是 Objective-C 的概念,在 C# 和 Java 等其他语言中为 null。)但是,当您这样做时,返回值始终为零;因此,如果您的字符串为 nil,则使用方法对其进行的任何相等比较都将返回 NO,即使您与 nil 进行比较也是如此。即便如此,请注意,空字符串nil并不相同,因为nil可以被视为不存在任何东西。空字符串没有字符,但是嘿,至少它在那里。 nil 表示什么都没有。

因此,您可能需要检查 state 是否不 nil,而不是使用方法将 state 与空字符串进行比较,使用简单的指针相等。

if(state == nil)
{
//do something
}
else
{
//do something
}

关于iphone - xcode 中的 NSString 还是 NSCFString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717310/

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