ここに、
NSString * decryptedStr = [[NSString alloc] initWithData:decryptedDataエンコーディング:NSUTF8StringEncoding];
"decryptedStr"は "decryptedData"がシミュレータで正常に動作しています。 しかし
それはiPhoneのデバイスで正常に動作していません。 エラーメッセージが出ました - [__ NSArrayM insertObject:atIndex:]:オブジェクトをnilにすることはできません" plzは私を助けます。
これは私のコードです
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は1次の行を変更します。
NSData *decryptedData = [[NSData alloc]init];
decryptedData= [b64DecData AESDecryptWithPassphrase:@"mypassword"];
NSString *decryptedStr = [[NSString alloc] initWithData:decryptedData encoding:NSUTF32StringEncoding];
これに:
NSData *decryptedData= [b64DecData AESDecryptWithPassphrase:@"mypassword"];
if([decryptedData length] > 0)
{
NSString *decryptedStr = [[NSString alloc] initWithData:decryptedData
encoding:NSUTF32StringEncoding];
} else {
NSLog(@"Hmmm, why is decrypted data a zero byte object??");
}