2015-05-05 35 views
0

我無法訪問函數外的playerAv()函數的元素。我怎樣才能訪問它?使用點符號無法訪問函數成員swift

而且我試圖刪除函數,並在任何函數之外使用這些行,並在第二行中出現錯誤。爲什麼我無法在函數之外分配audioLink值?

var audioLink = "http://www.liveatc.net/play/ltba.pls" 
var player:AVPlayer = AVPlayer(URL: NSURL(string: audioLink)) 

我試圖

let pa = playerAv() 
pa.player.volume = currentValue //I got an error here:(
println(currentValue) 

部分代碼:

func playerAv(){ 

     var audioLink = "http://www.liveatc.net/play/ltba.pls" 
     var player:AVPlayer = AVPlayer(URL: NSURL(string: audioLink)) 
    } 
@IBAction func sliderValueChanged(sender: UISlider) { 
     var currentValue = Float(sender.value) 
     println(currentValue) 
     player.volume = currentValue 
    } 

感謝

+0

斯威夫特JavaScript不。 – Tobias

+0

如果你想有成員變量,你需要結構或類 – Tobias

回答

2

你很困惑。

您在混合類和函數。

函數的局部變量不能在函數外部通過設計訪問。它們只存在於函數的範圍內,並在函數返回後立即停止存在。因此你的playerAv()函數沒有任何用處。

像你想playerAv應是一個類,用實例變量在我看來:

class PlayerAv 
{ 
    let audioLink: String = "http://www.liveatc.net/play/ltba.pls" 
    var player: AVPlayer 
    init() 
    { 
    player = AVPlayer(URL: NSURL(string: self.audioLink)) 
    } 
} 

現在你可以創建一個PlayerAv對象,並使用它:

let pa = playerAv() 
pa.player.volume = currentValue 
+0

你的幫助如此之大。謝謝 –

0

如果聲明var player裏面的功能,那麼這個變量的作用域只在函數內部。

你需要把一個控制器或任何類別,將滿足你內心的球員創造:

class MyPlayer { 

    var player: AVPlayer 

    init(link: String) { 
     self.player = AVPlayer(URL: NSURL(string: link)) 
    } 

} 

let mp = MyPlayer(link: "http://www.liveatc.net/play/ltba.pls") 
mp.player.volume = 2