【发布时间】:2012-04-15 10:14:26
【问题描述】:
遇到这个问题我想通过bump发送图片,但是bump api的最大块是256kb
if([[NSKeyedArchiver archivedDataWithRootObject:self.selectedImg]length] > 262144)
{
int dlen = [[NSKeyedArchiver
archivedDataWithRootObject:self.selectedImg] length];
NSLog(@"Sending data: %i bytes in %d chunks",dlen,
(int)ceil(((float)dlen / 262144.0f)));
for (int i=1; i <= (int)ceil(((float)dlen / 262144.0f)); i++) {
int maxr=0;
if ((262144*i) > dlen) {
maxr = dlen-(262144*(i-1));
} else {
maxr = 262144;
}
NSData *moveChunk = [[NSKeyedArchiver
archivedDataWithRootObject:self.selectedImg]
subdataWithRange:NSMakeRange(262144*(i-1),maxr)];
NSLog(@"Sending Chunk: %d, %d bytes",i,[moveChunk length]);
[bumpObject sendData:moveChunk];
}
}
else
{
//Data is 254kb or under
NSData *moveChunk = [NSKeyedArchiver
archivedDataWithRootObject:self.selectedImg];
[bumpObject sendData:moveChunk];
}
如何将所有块编译在一起?
已经花了 3 个小时,但无法解决。
【问题讨论】:
-
为什么不将
[NSKeyedArchiver archivedDataWithRootObject:self.selectedImg]的值赋给一个变量呢?我认为在系统资源上创建一个数据对象可能不是微不足道的......(另外,你为什么不直接做dlen / 262144?整数除法无论如何都会截断)。 -
错误这是发送数据,这很好。但我需要知道如何从设备的另一端返回
-
这样读起来很难。
标签: iphone ios xcode nskeyedarchiver