首頁>Program>source

我在iPhone應用程式中使用了它

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

但是它引發了一些異常,並且控製台顯示標题為"(null)"。

所以我現在正在使用它:

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

區別是什麼,確定字元串是否為null的最佳方法是什麼?

最新回復
  • 6月前
    1 #

    正如其他人指出的那樣,可可/目標C下有许多種" null".但是還有一點需要註意的是,[title isKindOfClass:[NSNull class]]毫無意義,因為据記載[NSNull null]是單例,因此您只需檢查指標是否相等即可.請參阅可可主题:使用空值。

    一个好的測試可能是:

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

    請註意如何使用這樣的事實:即使title為nil,title.length仍將返迴0 / nil / false,即在這種情况下為0,因此您不必對其进行特殊處理.這是Objective C的新手很难適應的东西,特別是来自其他語言的訊息/方法呼叫無效崩潰。

  • 6月前
    2 #

    它就像

    一樣簡單
    if([object length] >0)
    {
      // do something
    }
    

    請記住,在目標C中,如果object為null,它將返迴0作為值。

    這將使您同時得到一个空字元串和一个长度為0的字元串。

  • 6月前
    3 #

    請參阅此站點上的以下相關文章:

      Is if (variable) the same as if (variable != nil) in Objective-C h

    我认為您的錯誤与其他原因有關,因為您不需要进行額外的檢查。

    也請參见以下相關問题:正確檢查nil sqlite文字列

  • 6月前
    4 #

    所有這些"對我有用的答案"有什麼用? 我们都用相同的語言編碼,規則是

    確保引用不是 nil

    檢查並確保字元串的长度不為0

    這對所有人都有效.如果给定的解決方案仅對您"有效",那是因為您的應用程式流程不允许引用為null或字元串长度為0的情况。執行此操作的正確方法是將處理的方法

  • 6月前
    5 #

    我發現為了真正做到這一點,您最终不得不做類似於

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

    否則,您会遇到奇怪的情况,即控製仍然会绕過您的檢查.我還没碰到一个能超越 isEqual 和长度檢查。

  • filter:如何使用Android adb logcat按TAG名稱排除某些訊息?
  • jQuery設置選擇索引