2015-08-30 46 views
1

所以我試圖在我的精靈套件遊戲的應用程序購買實現,我在斯威夫特工作。我知道我需要在SKProductsRequestDelegateSKPaymentTransactionObserver協議添加到我的GameScene類,爲了做到這一點,但是當我加入他們,我得到的錯誤:Swift:無法將SKProductsRequestDelegate協議添加到GameScene類中?

Type 'GameScene' does not conform to protocol 'SKProductsRequestDelegate' 

SKPaymentTransactionObserver類似的錯誤。

我進口StoreKit這裏是我的代碼:

import SpriteKit 
import AVFoundation 
import StoreKit 

class GameScene: SKScene, SKPhysicsContactDelegate, SKProductsRequestDelegate, SKPaymentTransactionObserver { 

我在做什麼錯?

+1

聲稱一致性是不夠的,你實際上必須實現協議所需的方法。我認爲SKProductsRequestDelegate有一個子協議。但總而言之,你確定GameScene是應該處理商店交易的類嗎?我更喜歡單獨的類處理商店交易,沒有別的。 – gnasher729

+0

哪裏可以找到協議的方法? – skyguy

+0

查看標記爲_Required_ [here]的方法(https://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKProductsRequestDelegate/#//apple_ref/occ/intfm/SKProductsRequestDelegate/productsRequest:didReceiveResponse :) and [這裏](https://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/) – 0x141E

回答

0

我對Swift(尚未)不熟悉,但似乎Swift調用協議是我們其他人稱爲Interface
如果我是對的,那麼你需要自己實現協議「簽名」的所有方法(即承諾你的類將實現的編譯器)。 所以,如果一個協議有一個方法func doSomething()->String你需要實際上編寫這個方法在你自己的類中,以便你的類符合協議。

7

你可能有這樣的舊版本的功能paymentQueue的:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [AnyObject]) {... } 

這個功能,現在可以聲明如下:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {... } 

的productRequest應申報如下:

func productsRequest (request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {... } 

這是因爲你必須實現這個方法來符合協議l

相關問題