как динамически добавлять данные в HTML-файл - PullRequest
0 голосов
/ 21 октября 2010

У меня есть табличные формы, используемые для создания отчетов, которые являются HTML-файлами, и я хочу сохранить эти файлы, заполняя данные динамически, используя obj-c ..

любые идеи, как это сделать ..

Заранее спасибо

1 Ответ

1 голос
/ 21 октября 2010

Я много этим занимаюсь.Мой лучший друг здесь - NSString & Co.

Обратите особое внимание на метод stringWithFormat.

Например, здесь я задаю цвета для таблицы html.

-(NSString *) colorcomponents:(int) i size:(int) s
{
    CGColorRef color = [[coltable objectAtIndex:i] CGColor];
    NSString * tablecompformat = @"<td style=\"background: rgb(%d, %d, %d)\" width=%d height=%d> <b>  </b>  </td>";
    int numComponents = CGColorGetNumberOfComponents(color);

    if (numComponents == 4)
    {
        const CGFloat *components = CGColorGetComponents(color);
        CGFloat red = components[0]*256;
        CGFloat green = components[1]*256;
        CGFloat blue = components[2]*256;

        return [NSString     stringWithFormat:tablecompformat,(int)red,(int)green,(int)blue,s,s];
    }
    return nil;
}

Для каждой из частей, которые вы строите, вы можете добавить в свою основную строку HTML, используя метод NSString appendString.После того, как вы завершили построение вашей строки, вы можете сохранить ее в виде файла, или скопировать, или что-то еще ...

Вот основная процедура.Он должен дать вам хорошее представление о том, как динамически создавать и HTML-строки:

-(NSString *) emailstr
{
    NSMutableString * ress=[[NSMutableString alloc] initWithCapacity:100];

    NSString * formatstring=@"<tr><td > <b> %@</b>  </td>  <td>: %@ </td></tr>\n";
    //NSString * formatstring2=@"<tr><td> <b> %@</b>  </td>  <td>: %@ </td> <td>: %@ </td> </tr>\n";
    NSString * hline=@"<tr><td colspan=\"3\">  <hr>  </td>  </tr>\n";

    [ress appendString:@"<html><body>\n"];
    [ress appendString:[NSString stringWithFormat:@"<h3> Game: %@ </h3> \n", [gm name]  ]];

    [ress appendString:@"<table border=\"0\">"];// beginning of main table
    [ress appendString:@"<tr><td > <b> Initial</b>  </td> <td>"];

    [ress appendString:@"<table border=\"0\">"];
    for (int i=0;i<[gm xcount];i++)
    {
        [ress appendString:@"<tr> "];
        for(int j=0;j<[gm ycount];j++)
        {
            int k=[gm getinitpos:i y:j];
            [ress appendString:[self colorcomponents:k size:10]];
        }
        [ress appendString:@"</tr> "];
    }
    [ress appendString:@"</table><br>\n "];
    [ress appendString:@"</td></tr>\n"];

    [ress appendString:@"<tr><td> <b> End</b>  </td> <td>"];
    [ress appendString:@"<table border=\"0\">"];
    for (int i=0;i<[gm xcount];i++)
    {
        [ress appendString:@"<tr> "];
        for(int j=0;j<[gm ycount];j++)
        {
            int k=[gm getpos:i y:j];
            [ress appendString:[self colorcomponents:k size:10]];

        }
        [ress appendString:@"</tr> "];
    }
    [ress appendString:@"</table><br>"];
    [ress appendString:@"</td></tr>\n"];


    [ress appendString:[NSString stringWithFormat:formatstring,@"Rules",[sql getrulesname:[gm rules_id]]]];
    if ([gm step]>0) 
    {
        //[ress appendString:@"<table border=\"0\">"];
        [ress appendString:hline]; 

        for (int i=1; i<=[gm step];i++)
        {
            int x=[sql getlogx:[gm session_id] step:i];
            int y=[sql getlogy:[gm session_id] step:i];

            NSString * pnum = [NSString stringWithFormat:@"Move %d",i];
            NSString * posstring=[NSString stringWithFormat:@"(%d, %d)",x+1,y+1 ];
            [ress appendString:[NSString stringWithFormat:formatstring,pnum,posstring]];
        }
        [ress appendString:hline];
        //[ress appendString:@"</table><br>"];
    }

    [ress appendString:@"</table><br>"]; //end of main table

    [ress appendString:@"</body></html>"];

    return ress;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...