2012-02-24 11 views
6

Estoy bastante seguro de que tengo que usar NSMutableData para este problema, ya que voy a acceder al objeto varias veces y agregar cada sección de datos una vez que lo tenga.combina objetos nsdata en el objeto nsmutabledata

El problema que estoy frente a es que estoy queriendo crear un gran objeto NSMutableData que será creada por varios pequeños objetos NSData que se adjuntará al final de los datos mutables se oponen

He intentado el siguiente .

EDITAR: // Este método ahora funciona y agrega los datos como se supone también.

- (void) constructRequest 
{ 
    NSData * protocolInt = [self addProtocolVersion]; 
    NSMutableData * myMutableData = [[NSMutableData alloc] init]; 

    NSData *first_data = [self addProSig]; //nsdata type 
    NSData *second_data = [self addAct]; //nsdata type 
    [myMutableData appendData:first_data]; 
    [myMutableData appendData:second_data]; 
    //etc 


    [protocolInt writeToFile:@"/Users/imac/Desktop/_dataDump.dat" atomically:YES]; 

} 

En primer lugar no estoy seguro si esta es la forma correcta de añadir datos, Es sólo que he visto varios ejemplos similares. El principal problema es que en las dos líneas aquí

NSMutableData *first_data = [self addProSig]; //nsdata type 
     NSMutableData *second_data = [self addAct]; //nsdata type 

tengo advertencias en ambas líneas

tipos de puntero incompatibles inicialización 'NSMutableData * _strong' Wuth una expresión del tipo 'NSData *'

cualquier ayuda sería apreciada, También posibles soluciones mejores que las que estoy usando si las hubiera.

+0

¿Cuál es la declaración del método de '' addProSig' y addAct'? Si devuelven un 'NSData *', entonces necesitas convertirlo a 'NSMutableData *' haciendo algo como 'NSMutableData * mutDat = [[NSMutableData alloc] initWithLength: [immutData length]]; [mutDat setData: immutData]; 'donde' immutData' es un NSData * inmutable. – user1118321

+0

Lo he descubierto ... Estaba declarando el * first_data y * second_data incorrectamente. deberían haber sido NSData, no NSMutableData ... lo siento por eso. –

Respuesta

5

para deshacerse de esas advertencias se puede hacer una copia mutable como este ...

NSMutableData *first_data = [[self addProSig] mutableCopy]; //nsdata type 
NSMutableData *second_data = [[self addAct] mutableCopy]; //nsdata type 
+0

yup. lo declaraba como nsdata no nsmutabledata .. –

+0

Cool. ¿Hay algo más que todavía necesites respuesta en este caso? Todavía aparece como una pregunta sin respuesta. :) –

+0

opps .. Pensé que lo había marcado ... raro de todos modos re/ticked ahora: P –