Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用内购买-向用户提供当前价格_Ios_Xcode_In App Purchase_Skproduct - Fatal编程技术网

Ios 应用内购买-向用户提供当前价格

Ios 应用内购买-向用户提供当前价格,ios,xcode,in-app-purchase,skproduct,Ios,Xcode,In App Purchase,Skproduct,我有两个视图控制器。其中一个显示了可用的应用程序内购买。当用户选择其中一个时,它将显示一个新的视图控制器,其中包含购买的详细信息和“购买”按钮 我将代码从第一个视图传递到第二个视图的方式如下: -(IBAction)purchase1:(id)sender{ _purchasedController = [[iPadPurchasedViewController alloc] initWithNibName:nil bundle:nil]; _purchasedController.produc

我有两个视图控制器。其中一个显示了可用的应用程序内购买。当用户选择其中一个时,它将显示一个新的视图控制器,其中包含购买的详细信息和“购买”按钮

我将代码从第一个视图传递到第二个视图的方式如下:

-(IBAction)purchase1:(id)sender{
_purchasedController = [[iPadPurchasedViewController alloc] initWithNibName:nil bundle:nil];
_purchasedController.productID = @"xxxxx.xxxxx.xxxxx";
[self presentViewController:_purchasedController animated:YES completion:NULL];
[self.purchasedController getProductID:self];
}

因此,当用户选择一个按钮时,我将productID字符串传递给第二个ViewController。但是,我想在第一个视图控制器上向用户展示价格。有人能帮我吗?谢谢。

编辑后的答案更完整:

在ViewController.h文件中,应该有

@interface ViewController : UIViewController <SKProductsRequestDelegate> {
    NSArray *allProducts; 
}
然后可以这样使用:

-(NSString*) getPriceForProductWithID:(NSString*)productID{

   if(allProducts.count < 1) {
        NSLog(@"Did not fetch products yet");
   }
   else {

       NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
       numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
       [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

       for(SKProduct * product in allProducts) {

           if([product.productIdentifier isEqualToString:productID])
           {
               [numberFormatter setLocale:product.priceLocale];

               NSString *priceString= [numberFormatter stringFromNumber:product.price];

        NSLog(@"Product with ID: %@ has price: %@",product.productIdentifier, priceString);
              return priceString;
           } 
       }
    }
    return nil;
}
-(NSString*)getPriceForProductWithID:(NSString*)productID{
如果(所有产品计数<1){
NSLog(@“尚未获取产品”);
}
否则{
NSNumberFormatter*numberFormatter=[[NSNumberFormatter alloc]init];
NumberFormatterSetFormatterBehavior:NSNumberFormatterBehavior 10_4];
[NumberFormatterSetNumberStyle:NSNumberFormatterCurrencyStyle];
用于(SKProduct*所有产品中的产品){
if([product.productIdentifier IsequalString:productID])
{
[NumberFormatterSetLocale:product.priceLocale];
NSString*priceString=[NumberFormatterStringFromNumber:product.price];
NSLog(@“ID为%@的产品价格为%@”、Product.productIdentifier、priceString);
返回价格字符串;
} 
}
}
返回零;
}
获取产品:

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"xxxxx"]];
如果要成功,将调用以下代理:

    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    if (response.products == nil) {
        NSLog(@"No product belonging to the app!");
    }
    if ([response.invalidProductIdentifiers count] != 0) {
        NSLog(@"The following product indentifiers are invalid: %@",response.invalidProductIdentifiers);
    }
    for (SKProduct* prod in response.products) {
        NSLog(@"Proce: %@",prod.price);
    }
我希望这对你有用

重要提示:代码未经测试,我只是现在就写了…


祝你好运

您没有第一视图控制器中的价格信息吗?发送所有可用产品ID的SKProductsRequest,并存储返回的产品数组。然后,您可以使用该数组查找要在任何视图控制器中显示的价格;但是现在,我需要把它们每一个都存储为一个产品,然后再计算房产价格,对吗?我该怎么做?谢谢。首先,我不知道为什么,但是-(void)productsRequest没有被调用!另外,我不明白,在这行中:对于(我的产品中的SKProduct*product),编译器如何知道“product”是我想要使用的产品?谢谢…调用SKProductsRequest的类是SKProductsRequest委托吗?然后您应该执行以下操作:SKProductsRequest请求=[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@“xxxxx”];request.delegate=self;for()循环只遍历所有有效的产品并记录它们的id和价格。如果要查找特定的产品价格,请在循环中进行检查:如果([product.productIdentifier IsequalString:@“xxxxxx.xxxxx.xxxxx”]){/使用此产品*/}
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    if (response.products == nil) {
        NSLog(@"No product belonging to the app!");
    }
    if ([response.invalidProductIdentifiers count] != 0) {
        NSLog(@"The following product indentifiers are invalid: %@",response.invalidProductIdentifiers);
    }
    for (SKProduct* prod in response.products) {
        NSLog(@"Proce: %@",prod.price);
    }