2012-02-24 72 views
6

我很确定我必须为这个问题使用NSMutableData,因为我将多次访问该对象并添加每个数据段。将nsdata对象组合成nsmutabledata对象

我面对的问题是,我想创建将由的可变数据对象

我曾尝试以下几个小的NSData对象被追加到结束时创建一个大的NSMutableData对象。

编辑:/ /这种方法现在工作,并追加数据,因为它的假设。所有的

- (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]; 

} 

首先,我甚至不知道这是否追加数据的正确方法,这只是我所看到的几个例子相似。 的主要问题是,在这里的两行

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

我有两行警告

不兼容的指针类型初始化“NSMutableData * _strong” wuth 型“的NSData *”

的表达

任何帮助将不胜感激,也可能更好的解决方案,我所使用的,如果有的话。

+0

什么是'addProSig'和'addAct'方法声明?如果他们返回一个'NSData *',那么你需要通过做一些像NSMutableData * mutDat = [[NSMutableData alloc] initWithLength:[immutData length]]来将它转换为一个'NSMutableData *'; [mutDat setData:immutData];'其中'immutData'是一个不可变的NSData *。 – user1118321 2012-02-24 02:53:03

+0

我已经想通了......我错误地声明了* first_data和* second_data。他们应该是NSData而不是NSMutableData ..对此抱歉。 – 2012-02-24 03:57:33

回答

5

为了摆脱这些警告,你可以做一个可变的副本是这样的...

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

是。我宣布它为nsdata不nsmutabledata .. – 2012-04-12 21:08:25

+0

很酷。那么还有什么其他的东西需要你回答吗?它仍然被列为未答复的问题。 :) – 2012-04-12 21:10:05

+0

opps ..我以为我打勾了它...怪异无论如何重新/打勾现在:P – 2012-04-12 21:13:12