iphone – 如何将NSData作为NSString传递并将其恢复?

iphone – 如何将NSData作为NSString传递并将其恢复?,第1张

概述我有一个NSData对象. 我想将其转换为字符串,传递给函数,然后重新转换回NSData对象. 但是怎么样? 我试过这个方法,但是NSData的价值与原版不同! 我的代码: // a generic class APClass *c = [[APClass alloc] init]; c.aNumber = 123; c.aString = @"my string"; // my 我有一个NSData对象.

我想将其转换为字符串,传递给函数,然后重新转换回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 0x6b46c80

2012-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传递并将其恢复?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1082963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存