Fix the bug that the program will be crash if the data parament is nil

This pull request will fix some bugs
1.Because of network situation, sometimes the URL download connection will give data a nil. When try to JSONSerialization the nil data, the whole program will crash. 
2. Even if the download data downloaded successfully, we may fail to write to the file. 
So we need to make sure that the sub is downloaded and write to file successfully, then we remove the corresponding data. Even if the program could not downloaded the sub now, we can press the down all button again to re-download all the items in the list view.