代码之家  ›  专栏  ›  技术社区  ›  Tirth

在NSMutableArray中存储动态数据时出现问题?

  •  1
  • Tirth  · 技术社区  · 14 年前

    结构TCo坐标 浮点数x; 浮动y; . 然后在drawRect方法中,我生成了一个类似的结构对象。

    struct TCo_ordinates *tCoordianates; 
    

    现在我画Y轴的图形,代码是。

        fltX1 = 30;
    fltY1 = 5;
    fltX2 = fltX1;
    fltY2 = 270;
    CGContextMoveToPoint(ctx, fltX1, fltY1);
    CGContextAddLineToPoint(ctx, fltX2, fltY2);
    NSArray *hoursInDays = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil];
    for(int intIndex = 0  ; intIndex < [hoursInDays count] ; fltY2-=20, intIndex++)
    {   
        CGContextSetRGBStrokeColor(ctx, 2, 2, 2, 1); 
        //CGContextSetRGBStrokeColor(ctx, 1.0f/255.0f, 1.0f/255.0f, 1.0f/255.0f, 1.0f);   
        CGContextMoveToPoint(ctx, fltX1-3 , fltY2-40);
        CGContextAddLineToPoint(ctx, fltX1+3, fltY2-40);
        CGContextSelectFont(ctx, "Helvetica", 14.0, kCGEncodingMacRoman);
        CGContextSetTextDrawingMode(ctx, kCGTextFill);
        CGContextSetRGBFillColor(ctx, 0, 255, 255, 1);
        CGAffineTransform xform = CGAffineTransformMake(
                                                        1.0,  0.0,
                                                        0.0, -1.0,
                                                        0.0,  0.0);
        CGContextSetTextMatrix(ctx, xform);
        const char *arrayDataForYAxis = [[hoursInDays objectAtIndex:intIndex] UTF8String];
        float x1 = fltX1-23;
        float y1 = fltY2-37;
        CGContextShowTextAtPoint(ctx, x1, y1, arrayDataForYAxis, strlen(arrayDataForYAxis));
        CGContextStrokePath(ctx);
    

    现在我想动态地将生成的x1和y1的值存储在NSMutableArray中,因为我编写了代码。

    NSMutableArray *yAxisCoordinates = [[NSMutableArray alloc] autorelease];
        for(int yObject = 0; yObject < intIndex; yObject++)
        {
            [yAxisCoordinates insertObject:(tCoordianates->x = x1,tCoordianates->y = y1) atIndex:yObject];  
    
        }
    

    以上代码正确?????????????

    1 回复  |  直到 14 年前
        1
  •  2
  •   Can Berk Güder Pugalmuni    14 年前

    据我所知(我没有阅读整个绘图代码,只是最后一部分),您的代码有一些问题:

    1. 你正在创建一个新的点结构,你可以使用 CGPoint .
    2. init NSMutableArray .
    3. 你想插入 但它不是一个 TCo_ordinates 结构。
    4. 即使是,你 不能 将结构存储在 NSArray ,必须存储对象。

    这里有一种方法可以在 :

    NSMutableArray *foo = [NSMutableArray array];
    NSValue * bar = [NSValue valueWithCGPoint:CGPointMake(x, y)];
    [foo addObject:bar];
    

    CGPoint point = [[foo objectAtIndex:i] CGPointValue];