Teo*_*ing 179 cocoa-touch objective-c ios
我在我的iPhone应用程序中使用它
if (title == nil) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一些异常,控制台显示标题为"(null)".
所以我现在正在使用它:
if (title == nil || [title isKindOfClass:[NSNull class]]) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
有什么区别,确定字符串是否为空的最佳方法是什么?
Pet*_*wis 390
正如其他人所指出的那样,在Cocoa/Objective C下有很多种"null".但还有一点需要注意的是,[title isKindOfClass:[NSNull class]]是无意义复杂的,因为[NSNull null]被记录为单身,这样你就可以检查指针是否相等.请参阅Cocoa主题:使用Null.
所以一个好的测试可能是:
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
Run Code Online (Sandbox Code Playgroud)
注意如何使用即使title为nil,title.length将返回0/nil/false,在这种情况下为0,因此您不必特殊情况.这是对Objective C的新手很难习惯的东西,特别是来自其他语言的消息/方法调用nil崩溃.
Blu*_*ame 25
它就是这么简单
if([object length] >0)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
记住,在Objective C中,如果object为null,则返回0作为值.
这将为您提供空字符串和0长度字符串.
什么是所有这些"适合我的答案"?我们都用相同的语言和规则进行编码
这对所有人都有用.如果给定的解决方案仅"适合您",那只是因为您的应用程序流不允许引用可能为null或字符串长度为0的情况.执行此操作的正确方法是将处理的方法在所有情况下你想要什么.
我发现,为了真正做到正确,你最终必须做类似的事情
if ( ( ![myString isEqual:[NSNull null]] ) && ( [myString length] != 0 ) ) {
}
Run Code Online (Sandbox Code Playgroud)
否则你会遇到奇怪的情况,控制仍会绕过你的检查.我没有遇到一个让它通过isEqual
长度检查.
归档时间: |
|
查看次数: |
171531 次 |
最近记录: |