0

そのようなものを実装したいのですが、idが原因でaddでエラーが発生します!!!

NSMutableArray *rgbarray = [[NSMutableArray alloc] init];
 NSInteger rgb[3];
            const CGFloat *components = CGColorGetComponents(cgcolor);
            CGFloat cgred = components[0];
            CGFloat cggreen = components[1];
            CGFloat cgblue = components[2];
            rgb[0] = cgred;
            rgb[1] = cggreen;
            rgb[2] = cgblue;

            [rgbarray addObject:rgb];

idの代わりにrgbを追加したいですか?

4

1 に答える 1

3

オブジェクトのインスタンスへのポインターのみを追加できますNSMutableArray

を使用するNSDictionaryか、独自のサブクラスを作成してNSObject、3 つの値をラップできます。

NSDictionary * rgbDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:cgred], @"cgred", [NSNumber numberWithFloat:cggreen], @"cggreen", [NSNumber numberWithFloat:cgblue], @"cgblue", nil];

[rgbarray addObject:rgbDictionary];

値を取得するには

NSDictionary * rgbDictionary = [rgbArray objectAtIndex:0];
CGFloat cgred = [[rgbDictionary objectForKey:@"cgred"] floatValue];
CGFloat cggreen = [[rgbDictionary objectForKey:@"cggreen"] floatValue];
CGFloat cgblue = [[rgbDictionary objectForKey:@"cgblue"] floatValue];

私は実際にサブクラスのアプローチを使用します。値に C 配列を使用してコーディングしようとしていたため、このNSDictionaryアプローチでエラーを回避できます。

于 2012-05-09T06:07:43.383 に答える