質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

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

Swift

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

Q&A

解決済

2回答

3002閲覧

実機でのXMLParserの読み込みについて

P-san

総合スコア21

Xcode

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

Swift

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

0グッド

0クリップ

投稿2016/10/05 08:16

###前提・実現したいこと
iPhoneのappにてXMLファイルを読み込んでその要素を取得したいと思います。
以下のようにソースを書いてXcodeのシュミレーターで起動しました。
こちらでは問題なく起動しました。続いて実機で起動してみたところ
起動自体は問題なくエラーも無かったですが、XMLファイルを読みませんでした。
関数に全く入っていないようです。
何かiPhoneの設定などが必要なのでしょうか?

よろしくお願いします。

###該当のソースコード

class ViewController: UIViewController, XMLParserDelegate { var arrayValues: [String] = [] override func viewDidLoad() { super.viewDidLoad() // XML解析実行 loadxml() } // XMLを解析する func loadxml(){ let url_text = "http:sample.co.jp//" guard let url = URL(string: url_text) else{ print("URLではありません。") return } // インターネット上のXMLを取得し、NSXMLParserに読み込む guard let parser = XMLParser(contentsOf: url) else{ print("エラー?") return } parser.delegate = self; parser.parse() } // XML解析開始時に実行されるメソッド func parserDidStartDocument(_ parser: XMLParser) { print("XML解析開始しました") } // 解析中に要素の開始タグがあったときに実行されるメソッド func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { print("開始タグ:" + elementName) } // 開始タグと終了タグでくくられたデータがあったときに実行されるメソッド func parser(_ parser: XMLParser, foundCharacters string: String) { print("要素:" + string) // 要素を配列に格納 arrayValues.append(string) } // 解析中に要素の終了タグがあったときに実行されるメソッド func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { print("終了タグ:" + elementName) } // XML解析終了時に実行されるメソッド func parserDidEndDocument(_ parser: XMLParser) { print("XML解析終了しました") print(arrayValues) } // 解析中にエラーが発生した時に実行されるメソッド func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) { print("エラー:" + parseError.localizedDescription) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

###補足情報(言語/FW/ツール等のバージョンなど)
言語:Swift3
環境:Xcode 8

実機:iPhone5
iOS: 9.3.1

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

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

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

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

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

guest

回答2

0

自己解決

一部、自己解決しました。実機をwifiで通信したら問題なく動きました。
今まで別のiPhoneからテザリングでネットワーク共有を利用して通信していました。
結果、うまくいきませんでした。
原因は不明です。

投稿2016/10/06 00:32

P-san

総合スコア21

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

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

0

途中のエラーでreturnしているということは無いですか?

パースの処理まで行っているのでしたら、以下のように記述するとパースできたかどうかをBoolで返すのでログを見てみてください。

swift

1print(parser.parse())

あとシュミレーターで値が取得出来ているので問題ないとは思いますが、以下の設定はされていますか?
iOS9 ATS問題

投稿2016/10/05 10:58

_Kentarou

総合スコア8490

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問