###前提・実現したいこと
サーバーからArrayを取得したい。
###発生している問題・エラーメッセージ
HTTP Request in Swift 3.0を参考にGET通信をできるようにしました。
サーバーから以下のような配列を取得したいと思っています。
["text1","text2","text3"]
ただ、取得したデータを見るとOptional(34 bytes)
のようになっています。
以下のようにStringに直してみたら、["text1","text2","text3"]
のようにデータは来ていることはわかっています。
String(data: data!, encoding: String.Encoding.utf8)!
Optionalについて調べていたら、以下のようにすれば取れるよみたいな回答も見つけましたが、結果は34 bytes
と表示されるだけでした。
guard let dataArray = data else { print("no data") self.productIdentifiers = [] return }
Optionalについてはあまり触れて来ていないので、わからず...教えていただけると嬉しいです。
よろしくお願いします。
###該当のソースコード
Swift
1request.get(url: url, completionHandler: { data, response, error in 2 print(data) // Optional(34 bytes) 3 print(String(data: data!, encoding: String.Encoding.utf8)!) // ["text1","text2","text3"] 4 5 guard let dataArray = data else { 6 print("no data") 7 self.productIdentifiers = [] 8 return 9 } 10 print(dataArray) // 34 bytes 11})
["text1","text2","text3"] のときに Optional(34 bytes) と表示されるのでしょうか?
該当ソースコードの2行目のように data をそのまま print(data) すると Optional(34 bytes) と表示されます。
すみません、質問の意図が伝わりにくかったかもしれません。"text1"などは、仮にそう書いているだけではなく、実際に "text1" というデータなのでしょうか? また、["text1","text2","text3"] というのは、出力をコピペしたものでしょうか?スペースなどを削除したりしていないでしょうか?
"text1"などはダミーです。実際のAPIのデータをコピペしたものは ["test_item1","test_item2","test_item3"] です。また、「Stringに直してみたら〜」の部分をコピペしたものは ["test_item1","test_item2","test_item3"] です。テキストのみをダミーに変えていました。Xcodeのログからそのままコピペしています。
そのデータだとサイズが40bytesになってしまうのですが、それは置いておくとして、受け取ったデータは配列(Array)ではなく文字列だと思われるのですが、shota_eさんはそう認識されているでしょうか?【追記】MasakiHoriさんが回答を書いてくださったので、この質問への返信は不要です。
回答2件
あなたの回答
tips
プレビュー