当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《在Objective-C中检查空字符串的正确方法是什么?》经验,为你挑选了5个好方法。

我在我的iPhone应用程序中使用它

if (title == nil) {
    // do something
}

但它抛出一些异常,控制台显示标题为"(null)".

所以我现在正在使用它:

if (title == nil || [title isKindOfClass:[NSNull class]]) {
    //do something
}

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



1> Peter N Lewi..:

正如其他人所指出的那样,在Cocoa/Objective C下有很多种"null".但还有一点需要注意的是,[title isKindOfClass:[NSNull class]]是无意义复杂的,因为[NSNull null]被记录为单身,这样你就可以检查指针是否相等.请参阅Cocoa主题:使用Null.

所以一个好的测试可能是:

if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";

注意如何使用即使title为nil,title.length将返回0/nil/false,在这种情况下为0,因此您不必特殊情况.这是对Objective C的新手很难习惯的东西,特别是来自其他语言的消息/方法调用nil崩溃.



2> Bluephlame..:

它就是这么简单

if([object length] >0)
{
  // do something
}

记住,在Objective C中,如果object为null,则返回0作为值.

这将为您提供空字符串和0长度字符串.


如果object是NSNull,这将无法工作,仍然需要先显式检查.
您还可以为NSNull创建一个类别,使其返回0到长度消息:)

3> TimM..:

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

是否(变量)与Objective-C h中的if(变量!= nil)相同

我认为您的错误与其他内容有关,因为您不需要进行额外检查.

另请参阅此相关问题:正确检查nil sqlite文本列



4> nenchev..:

什么是所有这些"适合我的答案"?我们都用相同的语言和规则进行编码

    确保参考不是

    检查并确保字符串的长度不为0

这对所有人都有用.如果给定的解决方案仅"适合您",那只是因为您的应用程序流不允许引用可能为null或字符串长度为0的情况.执行此操作的正确方法是将处理的方法在所有情况下你想要什么.


如果引用是*`nil`*(注意:不是"null"),那么发送一条消息,比如`length`,将产生0(或者该方法的返回类型的适当的0值)._那是语言的规则.在这种情况下,无需单独检查"nil".

5> Guardius..:

我发现,为了真正做到正确,你最终必须做类似的事情

if ( ( ![myString isEqual:[NSNull null]] ) && ( [myString length] != 0 ) ) {
}

否则你会遇到奇怪的情况,控制仍会绕过你的检查.我没有遇到一个让它通过isEqual长度检查.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有