how append nsdata

2019-06-18 04:47发布

问题:

how i could append nsdata, i would append lenght data on first message to send on socket i use code like this but error on runing.

int lendata = [message length];
NSData *firstdata = [NSData dataWithBytes: &lendata length: sizeof(lendata)];
NSData *mdata = [message dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *seconddata = [NSData dataWithData:mdata];
[firstdata appendData:secondata];

please tell if there is another way Thanks for your help.

回答1:

Glancing into my crystal ball:

  1. You are declaring seconddata as an NSMutableData instance, but then you initialize it using [NSData dataWithData:] instead of [NSMutableData dataWithData:], so seconddata won't be mutable in the end and you cannot append to it.

  2. You are trying to append to firstdata, which is not mutable either.

Solution: make firstdata mutable:

NSMutableData *firstdata = [NSMutableData dataWithBytes: &lendata
                                                 length: sizeof(lendata)];
[firstData appendData:[message dataUsingEncoding:NSUTF8StringEncoding]];

Then you can safely drop mdata and seconddata as they are not needed anymore.



回答2:

 NSMutableData *first_data = [NSMutableData dataWithContentsOfURL:self.firstURL];
 NSMutableData *second_data = [NSMutableData dataWithContentsOfURL:self.secondURL];
 [first_data appendData:second_data];
 [first_data writeToURL:url atomically:YES]; 

check above code for append