🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1057閲覧

Xcode(Swift)でiPhone上に変数を出力させる方法について

R_kun

総合スコア4

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/02/23 15:41

前提・実現したいこと

xcode(12.4)にてswiftを使ってiphoneアプリ(app)の作成に挑戦しています。
自作したwebサイトのurlを与えると、当該サイトのHTMLソースコードを取得し、画面に出力するサンプルプログラムを作成しております。
result.textに初期値「-」を入力して画面に出力しており、sateiボタンを押すと、当該サイトのHTMLソースコードをsourceHTMLに格納して、result.textに代入して画面に出力される流れです。

下記がXcodeの右下のログに出力されるようになり、こちらの3405をiphone画面に出力したいのですが、こちらのソースにどの様な記載を追加すれば可能でしょうか。
画面に変数の中身を出力するコードの書き方がわからず、ご教示いただけると幸いです。

例えば下から2行目に「result.text = sourceHTML!」を追加するようなイメージは持っているのですが、その場合は「cannot find sourceHTML in scope」とエラーが出力され、「print("取得したHTMLのソースは以下です。↓\n" + sourceHTML);」の下に上記を追加すると「Cannot force unsnap value of non-optional type 'String'」と出力され上手くいかず、出鼻を挫かれてます。。。

<ログ出力>
取得したHTMLのソースは以下です。↓
3405

該当のソースコード

swift

1import UIKit 2import Foundation 3 4class ViewController: UIViewController { 5 @IBOutlet weak var kumei: UITextField! 6 @IBOutlet weak var station: UITextField! 7 @IBOutlet weak var minutes: UITextField! 8 @IBOutlet weak var size: UITextField! 9 @IBOutlet weak var type: UITextField! 10 @IBOutlet weak var old: UITextField! 11 @IBOutlet weak var result: UILabel! 12 @IBOutlet weak var satei: UIButton! 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 // Do any additional setup after loading the view. 17 } 18 19 @IBAction func inputsend(_ sender: UIButton) { 20 21 let replaceString = "https://XXXXXX" 22 23 let targetURL: URL = URL(string: replaceString)!; 24 do { 25 // 入力したURLのページから、HTMLのソースを取得する。 26 let sourceHTML: String = try String(contentsOf: targetURL, encoding: String.Encoding.utf8); 27 print("取得したHTMLのソースは以下です。↓\n" + sourceHTML); 28 } 29 catch { 30 // 何かしらのエラーが発生した。 31 print("エラーが発生しました。"); 32 } 33 } 34}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/02/23 15:48

print("取得したHTMLのソースは以下です。↓\n" + sourceHTML); のすぐ上か下に result.text = sourceHTML を書けば良いのでは。
guest

回答1

0

ベストアンサー

エラーの固有名詞を削除して検索すると、答えが出てきますよ。

「cannot find sourceHTML in scope」はスコープ外のエラーです。
sourceHTMLはdoスコープの中だけ有効になっています。
doスコープの上の行で「var sourceHTML = ""」とすれば、下から2行目でも有効です。

「Cannot force unsnap value of non-optional type 'String'」はoptional型のエラーです。
print()の下の行で「result.text = sourceHTML」と記述します。(!を外す)

。。。たぶん

投稿2021/02/26 09:08

Ranford

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R_kun

2021/02/27 12:31

ありがとうございます!全くもって上記の通りで、無事事象が解消いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問