2010-04-02 8 views
0

Je développe une application dans laquelle je veux imprimer les valeurs sur un intervalle de ligne, pour cela j'ai utilisé NSArray avec plusieurs objets et les objets que je passe dans la méthode CGContextShowTextAtPoint(). Le code est.comment j'imprime les valeurs des objets NSArray dans CGContextShowTextAtpoint()?

   CGContextMoveToPoint(ctx, 30.0, 200.0); 
    CGContextAddLineToPoint(ctx, 30.0, 440.0); 
     NSArray *hoursInDays = [[NSArray alloc] initWithObjects:@"0",@"1",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil]; 
    int intHoursInDays = 0; 
    for(float y = 400.0; y >= 200.0; y-=18, intHoursInDays++) 
     { 
      CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0); 
      CGContextMoveToPoint(ctx, 28, y); 
      CGContextAddLineToPoint(ctx, 32, y); 
      CGContextSelectFont(ctx, "Helvetica", 12.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); 
      NSString *arrayDataForYAxis = [hoursInDays objectAtIndex:intHoursInDays]; 
      CGContextShowTextAtPoint(ctx, 10.0, y+20, [arrayDataForYAxis UTF8String], strlen((char *)arrayDataForYAxis)); 
      CGContextStrokePath(ctx); 
        } 

Le code ci-dessus est exécuté, mais il m'a donné la sortie est {oo, 1O, 2O, ........... 11}, je veux que la sortie est {0,1,2 , 3 ........... 11,12}. Le code ci-dessus m'a donné un caractère supplémentaire "o" après un seul chiffre.Je pense que le problème que je rencontre près du type de paramètres de coulée du 5ème paramètre à l'intérieur de la méthode de CGContextShowTextAtpoint CGContextShowTextAtpoint(). Comment je résous le problème du moulage de type pour l'impression des objets de NSSArray dans la méthode CGContextShowTextAtpoint() ??????????????

Répondre

1

Le problème est dans votre appel à strlen. Votre distribution (char *) ne change pas le fait que c'est un NSString *.

Vous pouvez modifier comme ceci:

const char *arrayDataForYAxis = [[hoursInDays objectAtIndex:intHoursInDays] UTF8String]; 
CGContextShowTextAtPoint(ctx, 10.0, y+20, arrayDataForYAxis, strlen(arrayDataForYAxis); 
+0

invariant, je l'ai déjà vérifier, mais il m'a donné des valeurs de déchets – Tirth

+0

invariantes, désolé était mon erreur, je ne l'ai pas vérifié correctement et répondu vous mais en fait son fonctionnement ... merci pour l'aide – Tirth

Questions connexes