1

winDscr と winSize の 2 つの配列があります。winDscr は説明を保持し、winSize は要求されたウィンドウ境界の値を保持することになっています。下記参照。

winDscr は今のところ問題ありません。ただし、winSize は 2. '{2560,4*2560/5},' を含む行でエラー (期待される式) を示します。NSString と計算を混在させることはまったく許可されていませんか? 私は何を間違っていますか?

どんな手がかりもとても役に立ちます、ティア、ロナルド。

NSArray *winDscr = [NSArray arrayWithObjects:
                   @"Auto",
                   @"2560-> 5:4",
                   @"2560->16:10",
                   @"2048-> 4:3",
                   @"1920-> 4:3",
                   @"1920->16:10",
                   @"A2 Portrait",
                   @"A2 Landscape",
                   @"A3 Portrait",
                   @"A3 Landscape",
                   nil];

NSArray *winSize = [NSArray arrayWithObjects:
                   @"Auto",
                   {2560,4*2560/5},
                   {2560,10*1920/16},
                   {2048,3*2048/4},
                   {1920,3*1920/4},
                   {1920,10*1920/16},
                   {[convertMMToPixel:420],[convertMMToPixel:594]},
                   {[convertMMToPixel:594],[convertMMToPixel:420]},
                   {[convertMMToPixel:297],[convertMMToPixel:420]},
                   {[convertMMToPixel:420],[convertMMToPixel:297]},
                   nil];
4

2 に答える 2

2

2 つの問題があります。

まず、{2560,4*2560/5}それ自体は有効な式ではありません。NSSizeと書くことでリテラル表現にすることができます(NSSize){2560,4*2560/5}NSMakeSize(2560, 4*2560/5)ライブラリ関数を使用するも記述できます。

次に、 はNSArrayObjective-C オブジェクトのみを保持でき、 a は Objective-C オブジェクトでNSSizeはありません。をラップしてNSSizeNSValueラッパーを配列に格納できます。

NSArray *winSize = [NSArray arrayWithObjects:
                   @"Auto",
                   [NSValue valueWithSize:(NSSize){2560,4*2560/5}],
                   [NSValue valueWithSize:(NSSize){2560,10*1920/16}],
                   ...

サイズを抽出するには:

NSValue *wrapper = winSize[2];
NSSize size = [wrapper sizeValue];
于 2012-10-20T06:16:11.177 に答える
0

{2560,4*2560/5}目的の C オブジェクトではなく、2 つのメンバーを持つ C 構造体です。NSArray はオブジェクトのみを保持できます。valueWithCGSize:これらの値を配列に追加する前に、CGSize() を保持する NSValue 内にこれらの値を保持する必要があります。

例:

...arrayWithObjects:
    @"Auto",
    [NSValue valueWithCGSize:CGSizeMake(2560,4*2560/5)],
    ...
于 2012-10-20T06:18:50.327 に答える