首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Objective-C中检查空字符串的正确方法是什么?

在Objective-C中检查空字符串的正确方法是什么?
EN

Stack Overflow用户
提问于 2009-06-09 08:13:49
回答 19查看 186.2K关注 0票数 190

我在我的iPhone应用程序中使用了这个

代码语言:javascript
代码运行次数:0
运行
复制
if (title == nil) {
    // do something
}

但是它抛出了一些异常,控制台显示标题是"(null)“。

所以我现在使用这个:

代码语言:javascript
代码运行次数:0
运行
复制
if (title == nil || [title isKindOfClass:[NSNull class]]) {
    //do something
}

有什么区别,确定字符串是否为空的最佳方法是什么?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2009-06-10 07:45:36

正如其他人所指出的,在Cocoa/Objective C下有许多种" null“,但需要注意的是,[title isKindOfClass:NSNull class]是毫无意义的复杂,因为NSNull null被记录为一个单例,所以您可以只检查指针是否相等。参见Topics for Cocoa: Using Null

因此,一个好的测试可能是:

代码语言:javascript
代码运行次数:0
运行
复制
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";

请注意,即使标题为nil,title.length也会返回0/nil/false,即本例中的0,因此您不必对其进行特殊处理。这是那些刚接触Objective C的人很难习惯的东西,特别是来自其他语言的人,在这些语言中,对nil的消息/方法调用崩溃。

票数 403
EN

Stack Overflow用户

发布于 2009-06-09 11:25:50

它就像下面这样简单

代码语言:javascript
代码运行次数:0
运行
复制
if([object length] >0)
{
  // do something
}

请记住,在目标C中,如果object为null,则返回0作为值。

这将得到一个空字符串和一个长度为0的字符串。

票数 26
EN

Stack Overflow用户

发布于 2009-06-09 08:27:53

请参阅本网站上的以下相关文章:

我认为你的错误与其他事情有关,因为你不应该做额外的检查。

另请参阅此相关问题:Proper checking of nil sqlite text column

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/968792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档