1

NSStringが空白かどうかを確認する方法が正確にわかりません。このコードがあります...

 NSString *imageName = [myItem objectForKey:@"iconName"];

        if(imageName == @"")
        {
        }

そして、myItemオブジェクトに印刷を行うと、次のように表示されます。

iconName = "";

NSString * imageName行で、コンソールのxcodeに次のように表示されていることに気づきました。

「変数はNSStringではありません」

iconNameとして取得できないものは、NSStringとしてparse.comデータベースに保存および保存されます。

そのコードを実行すると、imageName = "";に気付かないようですが、

4

4 に答える 4

3

文字列を比較するときは、次のコード ブロックを使用する必要があります。

if ([imageName isEqualToString:@""]){
}
于 2012-11-03T17:31:04.560 に答える
3

isEqualToString2 つの文字列を比較するには、 を使用する必要があります。== だけを使用すると、2 つのポインターが比較されます。

次の方法で、受け取ったオブジェクトが NSString かどうかを確認することもできます。

if ([imageName isKindOfClass:[NSString class]])

お役に立てれば。

于 2012-11-03T17:31:30.187 に答える
2

すでにいくつかの回答がありますが、これが私の見解です。

まず、警告 (エラーではない) は次のように修正できます。

 NSString *imageName = (NSString *)[myItem objectForKey:@"iconName"];

次に、文字列が空白ではないことnil 確認します。Objective-C でこれを行う最も簡単な方法は、文字列の長さを確認することです。文字列が nil の場合は 0 を返し、空の場合は 0 を返すためです。

if([imageName length] == 0)
{
   // This is an empty string.
}

@jlehr が指摘しているように、imageName が実際には文字列として保存されていない可能性がある場合は、クラッシュを防ぐために最初に確認する必要があります。(これは、アプリケーションのロジックに応じて、必要な場合と必要でない場合があります):

if ([imageName isKindOfClass:[NSString class]] 
{
    if([imageName length] == 0)
    {
        // This is an empty string.
    }
}
于 2012-11-03T17:47:36.893 に答える
0

を返す"variable is not NSString"からでしょう。objectForKey:id

を使用する必要があります[imageName isEqualToString:@""]

于 2012-11-03T17:31:57.327 に答える