0
整数を1
BOOLEAN YES
に変換したいNO
私のコード:
NSNumber *num = 0;
BOOL myBool = [num boolValue];
NSLog(@"bool is: %@",myBool);
それは次のように出力を与えます(null)
何が間違っている可能性がありますか?
0
整数を1
BOOLEAN YES
に変換したいNO
私のコード:
NSNumber *num = 0;
BOOL myBool = [num boolValue];
NSLog(@"bool is: %@",myBool);
それは次のように出力を与えます(null)
何が間違っている可能性がありますか?
まず第一に、あなたの初期化NSNumber
は正しくありません。+numberWith:
次で定義されているクラスメソッドの1つを使用する必要がありますNSNumber
。
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
BOOL
sは単なるsigned char
sであるため、フォーマット指定子を使用することはできませんが、、、などの%@
任意の統合フォーマット指定子を使用できます。%d
%i
%c
ただし、YES
またはを出力NO
するには、文字列を使用する必要があります。
NSLog(@"bool is: %@", (myBool) ? @"YES" : @"NO");
への割り当てが正しくないNSNumber
場合、本当に整数を含むオブジェクトを作成するつもりでしたか、それともタイトルの質問「int を BOOL に変換する」は正しいですか?
後者の場合int
、値を使用して を変換する0
か1
、BOOL
キャストするだけです。
int num = ...; // num is 0 or 1
BOOL myBool = (BOOL)num; // myBool is NO or YES
ただし、より良い変換は次のとおりです。
BOOL myBool = num != 0; // myBool is NO for 0, YES for anything else
これは、ゼロが偽でゼロ以外が真であるという Obj-C (および C) の概念に従っているためです。
BOOL
値を文字列"YES"
に変換したい場合"NO"
、この単純な関数で効率的に変換できます。
NS_INLINE NSString *BoolToStr(BOOL b) { return b ? @"YES" : @"NO"; }
便利なヘッダーに配置して、必要な場所にインポートするだけです。
schが述べたように、あなたはここでそれを台無しにしました:
NSNumber *num = 0;
これについて完全に正しいかどうかはわかりませんが、NSNumber を '0' として割り当てると、数値が必要な場合は値 'nil' が与えられます。'@0' または '@1' を使用するか、メソッド「numberwithint」
@jacob Relkin が指摘しているように。の使い方が間違っていますNSNumber
。
次に、and ->boolValue
を変換できます。作品:NSString
NSNumber
BOOL
boolValue
最初のスペース文字 (whitespaceSet)、またはオプションの -/+ 記号とそれに続くゼロをスキップします。"Y"、"y"、"T"、"t"、または数字1-9のいずれかに遭遇すると、YES を返します。末尾の文字は無視されます。
あなたはそれを次のint
ように使うことができますboolean
BOOL a = 数値; //boolValue と同じように動作します。