我在第一个Swift项目中处理了我的第一个应用程序内购买设置。我试图从我的UserDefaults获取一个应用程序内捆绑字符串,而不是将其作为固定字符串烘焙,但我收到错误"致命错误:在展开时意外发现nil可选值"
我从UserDefaults调用我的变量,如下所示:
var bundleIdentity : AnyObject!
NSUserDefaults.standardUserDefaults().synchronize()
var userDefaults = NSUserDefaults.standardUserDefaults()
if let myBundle: AnyObject? = userDefaults.objectForKey("bundle") {
bundleIdentity = myBundle as String
}
现在,我尝试在我的" getProductInfo"中使用它。 FUNC:
func getProductInfo(){
if SKPaymentQueue.canMakePayments(){
let productID:NSSet = NSSet(object:self.bundleIdentity!)
let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID)
request.delegate = self
request.start()
}
}
我知道" bundleIdentity"因为我可以打印它作为一个字符串,但我很困惑为什么我不能在NSSet中使用它(对象:self.bundleIdentity!)并得到错误。
任何帮助都会非常感激,因为我还是Swift的新手!
由于
答案 0 :(得分:0)
您已将bundleIdentity
声明为可选(使用?
),然后您告诉机器它肯定有值(使用!
)。因为你撒谎而发脾气。