プロパティを持つクラスPersonの人物オブジェクトは住所、年齢です。プロパティを確認すると、次のように画面にアドレスを出力します。
NSLog(@"Add: %@, length: %i", person.address, [person.address length]);
結果は次のとおりです。加算: nil、長さ: 6
文字列が null なのに長さが 6 と表示される理由を説明してもらえますか?
ありがとう。
プロパティを持つクラスPersonの人物オブジェクトは住所、年齢です。プロパティを確認すると、次のように画面にアドレスを出力します。
NSLog(@"Add: %@, length: %i", person.address, [person.address length]);
結果は次のとおりです。加算: nil、長さ: 6
文字列が null なのに長さが 6 と表示される理由を説明してもらえますか?
ありがとう。
おそらく、フィールドに "(null)" という文字列値を取得している可能性があります。これは 6 文字の長さです。
住所とは何ですか?NSStringだと思いますか?%iの代わりに長さとして%dまたは%luを使用します(%luを使用する場合はunsigned longにキャストします)。これにより、正しい結果が得られます。
長さは結果としてNSUIntegerを与えます。したがって、正しい文字列形式指定子は%luになりますが、%dも機能するはずです(これを考えると、私は常に%dを使用します)。私は%iとしては決して...
NSLog(@"%lu", (unsigned long)string.length)
次の形式を確認してください。
おそらく探している答えは、間違った文字列形式指定子を使用しているということです。何が何だかわかりません%i
。%d
は整数%u
用で符号なし用なので、次のものが必要です。
NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]);
しかし...長さは、あなたが思っているものを返さない可能性があります。
person.address
がの場合nil
、メッセージlength
を送信しても長さは返されません (「何もない」長さは?)。たまたま、Objective C ランタイムはゼロを返すため、例は「機能」しますが、間違いなく正しくありません。