我是一个iOS开发新手。我想做加密和解密。我的问题如下:当我运行代码时,解密在模拟器中工作正常,但它无法在 iPhone 设备上运行。我收到如下错误消息:
[__NSArrayM insertObject:atIndex:]: object cannot be nil
这是我的代码。我定义了一个包含多个字符串的数组:
<dictionary>
<array>
<string>india,chennai,salem,coimbatore,krishnagiri,hosur,palghat</string>
<string>india1,chennai1,salem1,coimbatore1,krishnagiri1,hosur1,palghat1</string>
</array>
</dictionary>
NSString *stringIndex1 = [[NSString alloc]init];
NSMutableArray *arrAthigaaramList1;
dictDecryptList=[[NSMutableDictionary alloc]init];
for(int i=0;i<[arrD_Chapter count];i++)//50 Chapter wise
{
stringIndex1 = [arrD_Chapter objectAtIndex:i];
NSData *b64DecData = [Base64 decode:stringIndex1];
NSData *decryptedData = [[NSData alloc]init];
decryptedData= [b64DecData AESDecryptWithPassphrase:@"mypassword"];
NSString *decryptedStr = [[NSString alloc] initWithData:decryptedData encoding:NSUTF32StringEncoding];
NSLog(@"Decryped Data Base 64 encoded = %@",decryptedStr);
[arrAthigaaramList1 addObject:decryptedStr];
}
这段代码有什么问题?
您应该执行以下操作:
NSString *stringIndex1 = [[NSString alloc]init];
NSMutableArray *arrAthigaaramList1 = [[NSMutableArray alloc] init];
dictDecryptList=[[NSMutableDictionary alloc]init];
for(int i=0;i<[arrD_Chapter count];i++)//50 Chapter wise
{
stringIndex1 = [arrD_Chapter objectAtIndex:i];
NSData *b64DecData = [Base64 decode:stringIndex1];
NSData *decryptedData = [[NSData alloc]init];
decryptedData= [b64DecData AESDecryptWithPassphrase:@"mypassword"];
NSString *decryptedStr = [[NSString alloc] initWithData:decryptedData encoding:NSUTF32StringEncoding];
if (decryptedStr) {
NSLog(@"Decryped Data Base 64 encoded = %@",decryptedStr);
[arrAthigaaramList1 addObject:decryptedStr];
} else {
NSLog(@"ERROR decrypting!!!");
}
}
这将允许你做两件事:
1) 初始化可变数组。
2) 解密并记录错误后,不要尝试插入 nil 字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)