0

我有一个使用此代码的 iPhone 应用程序。

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

我在哪里正确获取subscriptionProduct.receipt,reciept 是一个nsdata,它在subscriptionProduct 类中声明。但是在转换之后,当我尝试打印payloadDict 时,它被定义为null。任何人都可以帮助我

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);

如果parseErrornil,则属性列表序列化认为它正确读取了数据。如果没有,它的内容应该告诉你去哪里看。

于 2012-04-17T09:08:13.547 回答
0

您的评论似乎说您要构造一个NSDictionary存储对象的新对象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 回答