迅速。为什么单身人士丢失数据?

时间:2015-10-13 08:53:25

标签: swift singleton

为什么我的数据会在单例中丢失?请看一下:

class YtDataManager {
    static var shared_instance = YtDataManager()

    let apiKey = /*...*/
    let /*...*/
    var channelData = [NSObject:AnyObject]()
    var videosArray = [[NSObject:AnyObject]]()

    var playlistId: String { return self.channelData["playlistId"] as! String}
    var urlStringForRequestChannelDetails: String { return String("https://www.googleapis.com/youtube/v3/channels?part=contentDetails,snippet&forUsername=\(self./*ChannelName*/)&key=\(self.apiKey)") }
    var urlStringForRequestChannelVideos: String { return String("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=\(self.playlistId)&key=\(self.apiKey)") }
   func fn1() { /*...*/ }
   func fn2() { /*...*/ }

// class definition continue... 

从一个函数(fn1)看,我将数据写入channelData:

//...
self.channelData["title"] = snippetDict["title"]
self.channelData["playlistId"] = ((firstItemDict["contentDetails"] as! [NSObject:AnyObject])["relatedPlaylists"] as! [NSObject:AnyObject])["uploads"]
//...

等等......从第二个函数(fn2)开始,我正在阅读数据:

//...
let targetURL = NSURL(fileURLWithPath: self.urlStringForRequestChannelVideos)
//...

因此urlStringForRequestChannelVideos是使用playlistId的计算属性(上面的代码)。

在这里,我对第二个函数中的channedData的空虚感到惊讶(我在调试模式下看到它,我也把它打印到了函数之外的stdout)。为什么????

class YtFeedViewController: UIViewController {
    @IBOutlet weak var menuButton:UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()

        if self.revealViewController() != nil {
            menuButton.target = self.revealViewController()
            menuButton.action = "revealToggle:"
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

            YtDataManager.shared_instance.fn1()
            print(YtDataManager.shared_instance.channelData.count) //0
            YtDataManager.shared_instance.fn2() //errorness
        }

        self.navigationItem.title = "YouTube feed"
        // Do any additional setup after loading the view.
    }

0 个答案:

没有答案