0

このコードを使用している IPhone アプリケーションがあります。

NSPropertyListFormat plistFormat;
NSDictionary *payloadDict = [NSPropertyListSerialization 
                       propertyListWithData:subscriptionProduct.receipt 
                                    options:NSPropertyListImmutable 
                                     format:&plistFormat 
                                       error:nil]; 

ここで、subscriptionProduct.receipt を正しく取得しています。reciept は、subscriptionProduct クラス内で宣言されている nsdata です。

4

2 に答える 2

1

メソッドからエラーを取得して表示してみてください。

NSPropertyListFormat plistFormat;
NSError *parseError;
NSDictionary *payloadDict = [NSPropertyListSerialization 
                       propertyListWithData:subscriptionProduct.receipt 
                                    options:NSPropertyListImmutable 
                                     format:&plistFormat 
                                      error:&parseError]; 

NSLog(@"payloadDict = %@", payloadDict);
NSLog(@"parseError = %@", parseError);

parseErrorがの場合nil、プロパティ リストのシリアル化、データを適切に読み取ったと見なします。そうでない場合、その内容はどこを見ればよいかを教えてくれるはずです。

于 2012-04-17T09:08:13.547 に答える
0

NSDictionaryあなたのコメントは、 object を格納する new を作成したいと言っているようですsubscriptionProduct.receipt

あなたはこれを行うことができます:

NSMutableDictionary *payloadDict = [NSMutableDictionary dictionary];

// Always check if values are nil before adding them to a dictionary.
if (subscriptionProduct.receipt)
    [payloadDict setObject:subscriptionProduct.receipt forKey:@"receipt"];

後でレシートを読み込みたい場合は、次のようにします。

NSData *receiptData = [payloadDict objectForKey:@"receipt"];
于 2012-04-18T07:23:09.967 に答える