okhd_gatewebさん、stsuneさん
雑な質問にもかかわらず回答いただきありがとうございます!
Aクラスをapiからjsonを取得するクラスとし、Bクラスにてそのデータを使用する構造としたかったのですが非同期通信でデータを取得し終える前に格納しようとしたのでエラーとなったのかな?と思います。
結果として、下記のようにNSNotificationCenterを使用することでクラス間でデータのやりとりができたので当質問は解決といたします。
Aクラス
lang
1var weatherData = NSMutableArray()
2 class var sharedInstance : LoadData {
3 struct Singleton{
4 static var instance = LoadData()
5 }
6 return Singleton.instance
7 }
8
9 func loadWeatherData() {
10 let URL = NSURL(string: "http://api.openweathermap.org/data/2.5/weather?q=tokyo")!
11 var task = NSURLSession.sharedSession().dataTaskWithURL(URL,completionHandler:{data,response,error in
12 var json = JSON(data:data)
13 if error == nil{
14 var cityName = json["name"].stringValue
15 var tempStr = json["main"]["temp"].stringValue
16 self.weatherData = [cityName,tempStr]
17
18 println("格納されたデータは:\(self.weatherData)")
19 }else{
20 println("failed")
21 }
22
23 NSNotificationCenter.defaultCenter().postNotificationName("loadWeatherJSON",object:nil);
24 })
25 task.resume()
26 }
27
28 func getArray()->NSMutableArray{
29 return self.weatherData
30 }
31
Bクラス
lang
1
2 var weatherArray = NSMutableArray()
3
4 override func viewDidLoad() {
5 NSNotificationCenter.defaultCenter().addObserver(self, selector: "notificationDid:", name: "loadWeatherJSON", object: nil)
6 LoadData.sharedInstance.loadWeatherData()
7
8 super.viewDidLoad()
9 }
10
11 func notificationDid(notification:NSNotification?){
12 self.weatherArray = LoadData.sharedInstance.getArray()
13 println("取得したデータ:\(weatherArray)")
14 }
15
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。