0
我收到5的錯誤信息,告訴我,AnyObject
是無法轉換爲以下幾點:NSString
,SKProduct
,Set<NSObject>
和SKPaymentTransaction
。這是什麼意思,我該如何解決這個問題?試圖實現iAd的去除,但得到「AnyObject是無法轉換爲...」
這是我使用的代碼:
import UIKit
import StoreKit
import AVFoundation
import iAd
class ViewController: UIViewController,SKPaymentTransactionObserver, SKProductsRequestDelegate, ADBannerViewDelegate {
@IBOutlet var adBanner: ADBannerView!
var product: SKProduct!
override func viewDidLoad() {
super.viewDidLoad()
self.adBanner.hidden = true
self.adBanner.delegate = self
removeAdsButton.hidden = true
if NSUserDefaults.standardUserDefaults().objectForKey("Ads") == nil {
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
self.getProductInfo();
}
if var status: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("Ads"){
if status as NSString == "purchased" {
self.adBanner.removeFromSuperview()
self.removeAdsButton.hidden = true;
self.removeAdsButton.userInteractionEnabled = false
}
else{
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
self.getProductInfo()
}
}
audioPlayer = AVAudioPlayer(contentsOfURL: evilMusic, error: nil)
audioPlayer.prepareToPlay()
}
// Hide status bar
override func prefersStatusBarHidden() -> Bool {
return true
}
@IBOutlet weak var janitor: UIImageView!
@IBOutlet weak var removeAdsButton: UIButton!
var evilMusic = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("C", ofType: "m4a")!)
var audioPlayer = AVAudioPlayer()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
NSLog("%@",error)
}
func bannerViewDidLoadAd(banner: ADBannerView!) {
self.adBanner.hidden = false
}
func bannerViewWillLoadAd(banner: ADBannerView!) {
}
func bannerViewActionDidFinish(banner: ADBannerView!) {
}
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
let products = response.products
if (products.count != 0)
{
product = products[0] as SKProduct
}
removeAdsButton.hidden = false
}
func getProductInfo(){
if (SKPaymentQueue.canMakePayments()){
let productID:NSSet = NSSet(object: "com.evileye.removeads")
let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID)
request.delegate = self
request.start()
}
}
func storePurchase(){
NSUserDefaults.standardUserDefaults().setObject("purchased", forKey:"Ads")
NSUserDefaults.standardUserDefaults().synchronize()
self.adBanner.removeFromSuperview()
self.removeAdsButton.hidden = true
self.removeAdsButton.enabled = false
}
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!){
for transaction:AnyObject in transactions {
if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
switch trans.transactionState {
case .Purchased:
SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
self.storePurchase()
break;
case .Failed:
SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
break;
case .Restored:
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
break;
default:
break;
}
}
}
}
@IBAction func removeAdsTapped(sender: AnyObject) {
let payment:SKPayment = SKPayment(product: product);
SKPaymentQueue.defaultQueue().addPayment(payment);
}