首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI预览SKProduct和introductoryPrice

SwiftUI预览SKProduct和introductoryPrice
EN

Stack Overflow用户
提问于 2020-04-24 20:27:38
回答 1查看 370关注 0票数 2

我试图模拟一个SKProduct,以便能够在SwiftUI的预览画布中查看它。

我已经能够创建一个虚拟的SKProduct,在SKProduct里面有一个方便的地方.

代码语言:javascript
复制
//Mock Product
convenience init(identifier: String, price: String, priceLocale: Locale) {
    self.init()
    self.setValue(identifier, forKey: "productIdentifier")
    self.setValue(NSDecimalNumber(string: price), forKey: "price")
    self.setValue(priceLocale, forKey: "priceLocale")
}

但我不知道如何模拟introductoryPrice数据。我需要subscriptionPeriod numberOfUnits subscriptionPeriod unit

我不知道该写什么钥匙。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-25 04:31:01

它们是开放的类,所以解决方案只是使用继承,如下面的演示所示。

因此,您可以在任何地方构建和设置您的MockSK*实体,并将其传递到实际的SK*实例所期望的位置。

代码语言:javascript
复制
import StoreKit

class MockSKProductSubscriptionPeriod: SKProductSubscriptionPeriod {
    private let _numberOfUnits: Int
    private let _unit: SKProduct.PeriodUnit

    init(numberOfUnits: Int = 1, unit: SKProduct.PeriodUnit = .year) {
        _numberOfUnits = numberOfUnits
        _unit = unit
    }

    override var numberOfUnits: Int {
        self._numberOfUnits
    }

    override var unit: SKProduct.PeriodUnit {
        self._unit
    }
}

class MockSKProduct: SKProduct {
    private var _subscriptionPeriod: SKProductSubscriptionPeriod

    init(subscriptionPeriod: SKProductSubscriptionPeriod = MockSKProductSubscriptionPeriod()) {
        _subscriptionPeriod = subscriptionPeriod
    }

    override var subscriptionPeriod: SKProductSubscriptionPeriod? {
        get {
            _subscriptionPeriod
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61416922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档