Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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_Iphone_Objective C_In App Purchase - Fatal编程技术网

Ios 显示应用内购买的本地化价格

Ios 显示应用内购买的本地化价格,ios,iphone,objective-c,in-app-purchase,Ios,Iphone,Objective C,In App Purchase,我在ViewController中使用以下代码,但是当我调用\u priceFormatter时,它会将价格显示为(null) ViewController.m { NSNumberFormatter * _priceFormatter; } ViewDidLoad [RageIAPHelper sharedInstance]; _products = nil; [[RageIAPHelper sharedInstance] requestProdu

我在ViewController中使用以下代码,但是当我调用
\u priceFormatter
时,它会将价格显示为
(null)

ViewController.m

{


    NSNumberFormatter * _priceFormatter;


}
ViewDidLoad

    [RageIAPHelper sharedInstance];

    _products = nil;

    [[RageIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
        if (success) {
            _products = products;

        }
    }];

    SKProduct * product = (SKProduct *) [_products objectAtIndex:0];


    ([[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier]);

  _priceFormatter = [[NSNumberFormatter alloc] init];
    [_priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [_priceFormatter setLocale:product.priceLocale];

    [_priceFormatter stringFromNumber:product.price];
已编辑

_priceFormatter = [[NSNumberFormatter alloc] init];
[_priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_priceFormatter setLocale:product.priceLocale];

NSString *priceString = [_priceFormatter stringFromNumber:product.price];
按钮:

    UIButton *buyButton = [[UIButton alloc] initWithFrame:CGRectMake(-1, 370, 320, 60)];
[buyButton setTitle:[NSString stringWithFormat:@"Upgrade for %@", priceString] forState:UIControlStateNormal];
    [buyButton.titleLabel setFont:[UIFont boldSystemFontOfSize:13.0]];
    [buyButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [buyButton.titleLabel setShadowColor:[UIColor colorWithWhite:0.1 alpha:1.0]];
    [buyButton.titleLabel setShadowOffset:CGSizeMake(0, -1)];
    [buyButton addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
    buyButton.tag = 0;
    [[self view] addSubview:buyButton];

您需要等待,直到调用完成处理程序来处理产品:

[RageIAPHelper sharedInstance];
_products = nil;

[[RageIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
    if (success) {
        _products = products;

        SKProduct * product = _products[0];

        [[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier];

        _priceFormatter = [[NSNumberFormatter alloc] init];
        [_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
        [_priceFormatter setLocale:product.priceLocale];
        NSString *price = [_priceFormatter stringFromNumber:product.price];
        someLabel.text = price;
    }
}];

如您所见,您需要实际使用格式化的数字字符串。您刚刚丢弃了该值。

requestProductsWithCompletionHandler
的调用是异步的。在设置
\u products
之前很久,您就试图访问它。那么我应该更改什么?在调用完成处理程序之前不要处理这些产品。是的,但是如何更改代码以使其正常工作?请参阅我的答案。顺便说一句,为什么要将产品标记为已购买?此代码不购买任何东西。它只是检索有关您的产品的数据。谢谢,我编辑了上面的问题以向您展示。我仍然得到(空)我在我的应用程序中使用了这些代码,但为什么它总是显示USD。我试图更改iPhone上的语言设置,但没有成功。怎么了?
[RageIAPHelper sharedInstance];
_products = nil;

[[RageIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
    if (success) {
        _products = products;

        SKProduct * product = _products[0];

        [[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier];

        _priceFormatter = [[NSNumberFormatter alloc] init];
        [_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
        [_priceFormatter setLocale:product.priceLocale];
        NSString *price = [_priceFormatter stringFromNumber:product.price];
        someLabel.text = price;
    }
}];