2016-10-10 9 views
8

मैं एक साधारण ध्वनि ऐप बनाने की कोशिश कर रहा हूं। मैं एक क्लिप को एक ध्वनिबोर्ड की तरह एक क्लिप चलाने के लिए दबाता हूं। समस्या यह है कि जब मैं इसे बनाने के लिए जाता हूं तो कहता है कि "ViewController" में कोई प्रारंभिक नहीं हैवर्ग "व्यू कंट्रोलर" के पास कोई प्रारंभिक नहीं है

import UIKit 
import AVFoundation 


class ViewController: UIViewController { 


    var audioPlayer: AVAudioPlayer 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    @IBAction func playSound(sender:UIButton){ 

     // Set the sound file name & extention 
     let audioFilePath = Bundle.main.path(forResource: "emp_learntoknow", ofType: "mp3") 

     if audioFilePath != nil { 

      let audioFileUrl = URL.init(fileURLWithPath: audioFilePath!) 
      do { 
      audioPlayer = try AVAudioPlayer(contentsOf: audioFileUrl) 
      audioPlayer.play() 


     } catch { 
      print("audio file is not found") 

      } 
     } 
} 
+1

आपको बस जोड़ना होगा: 'var audioplayer: AVAudioPlayer? = शून्य –

उत्तर

11

क्योंकि इसमें कोई प्रारंभिक नहीं है। आपके पास एक संपत्ति है:

var audioPlayer: AVAudioPlayer 

... लेकिन आप इसे प्रारंभ नहीं कर रहे हैं। आपने निश्चित रूप से इसे टाइप दिया है, लेकिन एक प्रकार मान नहीं है। सभी गुणों में प्रारंभिक मान होना चाहिए।

+0

! <- AVAudioPlayer var AudioPlayer के बाद आवश्यक: AVAudioPlayer! –

4

मैट की तरह उल्लेख किया गया है, ऐसा इसलिए हो रहा है क्योंकि संपत्ति प्रारंभ नहीं हुई है।

स्विफ्ट में, आपको चर के लिए विकल्प का उपयोग करना होगा जो किसी भी समय nil हो सकता है। आपको या तो शुरुआत से audioPlayer प्रारंभ करना होगा या वैकल्पिक प्रकार का उपयोग करना होगा, जिसमें स्पष्ट रूप से अनचाहे वैकल्पिक शामिल है, यदि आपको पता है कि इसे बाद में सेट किया जाएगा और उस तरह से रहना होगा।

संबंधित मुद्दे