2

iOS SDKのplistからid値を取得しています。値0を取得している場合は、1として表示する必要があります。その逆も同様です。

これが同じコードです

+(BOOL) removeButton {
   id obj = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
   if (obj != Nil) {
      return (BOOL)obj;
  }
    return YES;
 }

ただし、問題は、idの値が0の場合、Noを返し、その逆も同様であるということです。しかし、idの値が0であると仮定するなど、逆の問題に条件を設定したい場合は、YESを返す必要があり、その逆も同様です。

4

3 に答える 3

7

idにキャストすることはできませんBOOL。正しく格納されていると仮定すると、辞書から取得する方法は number wrapper を使用することNSNumberです。

NSNumber *boolWrapper = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
return ![boolWrapper boolValue];

これは、1 の場合は 0、0 の場合は 1 を返します。

あなたがしているのと同じように単純にキャストすると、オブジェクトが存在しない (つまりnil) でない限り、常に true になります。

于 2012-06-04T07:02:09.177 に答える
0

追加 "!" 以下のように :)

return !(BOOL)obj;

[編集]

また、以下のように、valueForKeyの代わりにobjectForInfoDictionaryKeythisを使用する必要があります。

id object = [[NSBundle mainBundle] objectForInfoDictionaryKey:"Key"];
于 2012-06-04T06:43:34.963 に答える
0

わかりました、このようなもの:

+(BOOL) removeButton {
   id obj = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"ABC"];
   BOOL shouldRemoveButton = N0;
   if (obj != nil) {
      shouldRemoveButton = YES;
  }
    return shouldRemoveButton;
 }

コードの途中に置くのは好きではreturnsありません。混乱し、あまり明確ではありません。

于 2012-06-04T06:43:55.463 に答える