
我想将其转换为字符串,传递给函数,然后重新转换回NSData对象.
但是怎么样?
我试过这个方法,但是NSData的价值与原版不同!
我的代码:
// a generic class APClass *c = [[APClass alloc] init]; c.aNumber = 123; c.aString = @"my string"; // my data obj NSMutableData *data = [NSMutableData data]; // archiver to store class in nsdata NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [encoder encodeObject:[NSNumber numberWithInt:c.aNumber] forKey:@"aNum"]; [encoder encodeObject:c.aString forKey:@"aStr"]; [encoder finishEnCoding]; [encoder release]; [c release]; NSLog(@"%@",data); Nsstring *d = [Nsstring stringWithFormat:@"%@",data]; // --- Nsstring *strFromData = [Nsstring stringWithFormat:@"%@",d]; NSData *datanM = [strFromData dataUsingEnCoding:NSUTF8StringEnCoding]; // decoder to retrIEve class from nsdata NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:datanM]; int number = [[decoder decodeObjectForKey:@"aNum"] intValue]; Nsstring *string = [decoder decodeObjectForKey:@"aStr"]; [decoder finishDeCoding]; [decoder release]; NSLog(@"[Number: %d] -- [String: %@]",number,string);
我怎样才能转换回原始的NSData?
data和datanM的大小不同.
编译器给出了这个错误:
2012-04-02 16:33:28.269 DataTest[18008:f803] -[__NSCFData
objectForKey:]: unrecognized selector sent to instance 0x6b46c802012-04-02 16:33:28.270 DataTest[18008:f803] * Terminating app due
to uncaught exception ‘NSinvalidargumentexception’,reason:
‘-[__NSCFData objectForKey:]: unrecognized selector sent to instance
0x6b46c80’
谢谢.
解决方法 解决了.使用dataUsingEnCoding,NSData的值不同.
为了传递方法或应用程序等数据,我使用了base64转换.
编码
Nsstring *d = [Nsstring stringWithFormat:@"appdue://obj=%@",[APBase64Converter base64forData:data]];
解码
NSData *data = [APBase64Converter base64DataFromString:urlParams];
APBase64Converter是一个可以轻松编码/解码数据和字符串的库.
可以从这里下载工作示例和APBase64Converter lib:@L_502_0@
谢谢大家.
我“保留”这篇文章,以帮助人们和我下次!
总结以上是内存溢出为你收集整理的iphone – 如何将NSData作为NSString传递并将其恢复?全部内容,希望文章能够帮你解决iphone – 如何将NSData作为NSString传递并将其恢复?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)