Objective-C
iOS

NSString の空文字、nil判定について

More than 1 year has passed since last update.

調査したのでメモ

test.m
    NSString *str = @"";

    if(!str) {
        printf("AAAA");
    } else {
        // こちらが呼ばれる
        printf("BBBB");
    }
test.m
    NSString *str = nil;

    if(!str) {
        // こちらが呼ばれる
        printf("AAAA");
    } else {
        printf("BBBB");
    }

なるほど。
空文字列かnilという判定をしたい場合にはこの書き方だと駄目。

NSStringの空チェック

書いてあった。

test.m
    NSString *str = @"";

    if([str length] == 0) {
        // こっちが呼ばれる
        printf("empty");
    } else {
        printf("no empty");
    }
test.m
    NSString *str = nil;

    if([str length] == 0) {
        // こっちが呼ばれる
        printf("empty");
    } else {
        printf("no empty");
    }

想定通りに動いた!