###前提・実現したいこと
Swift 3でJSONから取得したUNIX時間を曜日に変換したいのですが、どのようにすれば良いか分からず困っています。APIはOpenWeatherMapです。プログラム自体初めてで、Swiftを学び始めて2ヵ月の初心者です。天気予報アプリを作っています。よろしくお願いします。
追記 SwiftyJSONというライブラリを使用しています。
###発生している問題・エラーメッセージ
6行目の"dateFormatter.dateFormat"に赤線が付き、
Cannot call value of non-function type 'String!'
###該当のソースコード
let unixTime1 = json["list"][0]["dt"]
let stringTime1 = unixTime1
let dateFormatter = DateFormatter()
//dateFormatter.timeZone = NSTimeZone.system
dateFormatter.dateFormat = "EEE"
let day1 = dateFormatter.dateFormat(from: stringTime1)
self.weekLabel.text = String(describing: day1)
###試したこと
何時間も検索したのですが見つけられません。
###補足情報(言語/FW/ツール等のバージョンなど)
Swift 3
Xcode 8
SwiftyJSON
回答ありがとうございます。アプリで自動的に表示する際に、json["list"][0]["dt"] を "1499701500" に変換するやり方が分かりません。自分でコンバーターを使って変換することはできますが。
ちなみに、let dt = json["list"][0]["dt"] として、作ってくださったコードを入れてみましたが、2行目のTimeIntervalに赤線で「Cannot invoke initializer for type 'TimeInterval' with an argument list of type '(JSON)'」とエラーになりました。
おかげで完成しました! 大文字にもできました。ありがとうございました!
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE"
for n in 1...4 {
let dt = json["list"][n]["dt"]
let date = dt.double
let unixTime = TimeInterval(date!)
let stringTime = Date(timeIntervalSince1970: TimeInterval(unixTime))
let day = dateFormatter.string(from: stringTime)
let image = json["list"][n]["weather"][0]["icon"]
let press = json["list"][n]["pressure"]
let daysName = self.value(forKey: "d\(n)") as! UILabel
daysName.text = String("\(day)").uppercased()
let imageName = self.value(forKey: "i\(n)") as! UIImageView
imageName.image = UIImage(named: "\(image)" + ".image")
let pressName = self.value(forKey: "p\(n)") as! UILabel
pressName.text = String("\(press) + hPa")
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/10 23:38 編集
2017/07/11 00:27
2017/07/11 05:49
2017/07/11 07:48
2017/07/11 07:55
2017/07/11 08:51
2017/07/11 14:38