5

¿Cómo agrego varias cadenas a una cadena? ¿Cuál es la forma más fácil de hacer eso? Si no quiero para crear una nueva línea de código cada vez que añadir algo a una cadena, me gustaría hacer algo así:Agregar varias cadenas a una cadena

NSString *recipeTitle = [@"<h5>Recipe name: " stringByAppendingFormat:recipe.name, @"</h5>"]; 
    NSLog(@"%@", recipeTitle); 

    // This shows: <h5>Recipe name: myrecipe 
    // Where's the </h5> closing that header ? It will only show up with the next line of code 

    recipeTitle = [recipeTitle stringByAppendingFormat:@"</h5>"]; 

    //my problem is that will result in more than 1k lines of programming 

¿Tengo que añadir necesariamente una nueva línea de Anexión el agregado cada vez? ¿Existe una forma más rápida/más productiva de hacerlo?

Estoy tratando de componer el cuerpo del correo electrónico con mi tabla de vista en él y eso dará como resultado un gran conjunto de líneas de programación. ¿Hay alguien que pueda darme alguna pista o algo mejor que componer una cadena enorme solo para poder llenar mi cuerpo de correo electrónico con una tabla que contenga los datos de mi tabla?

Se agradece cualquier ayuda para que sea más productivo. Gracias ! Carlos Farini.

// Después de trabajar en él un poco llegué:

-(IBAction)sendmail{ 
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init]; 
[composer setMailComposeDelegate:self]; 
NSString *recipeTitle = @"<h5>Recipe name: "; 
recipeTitle = [recipeTitle stringByAppendingFormat:recipe.name]; 
recipeTitle = [recipeTitle stringByAppendingFormat:@"</h5>"]; 

NSString *ingredientAmount = @""; 
NSString *ingredientAisle = @""; 
NSString *ingredientTitle = @""; 

NSString *tableFirstLine = @"<table width='90%' border='1'><tr><td>Ingredient</td><td>Amount</td><td>Aisle</td></tr>"; 
NSString *increments = @""; 
int i=0; 

for (i=0; i < [ingredients count]; i++) { 
    Ingredient *ingredient = [ingredients objectAtIndex:i]; 
    ingredientTitle = ingredient.name; 
    ingredientAmount = ingredient.amount; 
    ingredientAisle = ingredient.aisle; 

    increments = [increments stringByAppendingFormat:recipeTitle]; 
    increments = [tableFirstLine stringByAppendingFormat:@"<tr><td>"]; 
    increments = [increments stringByAppendingFormat:ingredientTitle]; 
    increments = [increments stringByAppendingFormat:@"</td><td>"]; 
    increments = [increments stringByAppendingFormat:ingredientAmount]; 
    increments = [increments stringByAppendingFormat:@"</td><td>"]; 
    increments = [increments stringByAppendingFormat:ingredientAisle]; 
    increments = [increments stringByAppendingFormat:@"</td></tr>"]; 
    if (i == ([ingredients count]-1)) { 
     //IF THIS IS THE LAST INGREDIENT, CLOSE THE TABLE 
     increments = [increments stringByAppendingFormat:@"</table>"]; 
    } 
} 

NSLog(@"CODE:: %@", increments); 

if ([MFMailComposeViewController canSendMail]) { 
    [composer setToRecipients:[NSArray arrayWithObjects:@"[email protected]", nil]]; 
    [composer setSubject:@"subject here"]; 
    [composer setMessageBody:increments isHTML:YES]; 
    [composer setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
    [self presentModalViewController:composer animated:YES]; 
    [composer release]; 
}else { 
    [composer release]; 
} 

}

Pero, de nuevo, está mostrando sólo una fila de la tabla. Qué estoy haciendo mal aquí ?

Respuesta

5

¿Qué tal algo como esto:

NSString *recipeTitle = [NSString stringWithFormat:@"<h5>Recipe name: %@ </h5>", recipe.name]; 
+0

puedo poner múltiples% @ y luego ir así ..., recipe.name, recipe.preptime, recipe.included? Estaría conectando tres cadenas en la misma línea de código. Eso no sería malo ... – Farini

+1

Sí, puedes. Puede consultar la documentación para más formas de generar cadenas también. – Odrakir

+0

Eso es perfecto. Gracias por la iluminación – Farini

Cuestiones relacionadas