/ / - [__ NSArrayM insertObject:atIndex:]:オブジェクトは '重複していてはいけません - ios、objective-c、nsmutablearray

- [__ NSArrayM insertObject:atIndex:]:オブジェクトは '複製できません - ios、objective-c、nsmutablearray

ここに、

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??");
}