HOME > Debugを上手に使って作業効率をあげる
Debugを上手に使って作業効率をあげる
開発には避けて通れないデバッグの方法。Swiftの便利なデバックの仕方を説明します。私はphpを利用していましたので、dump処理が無いのが わかりずらいなぁとの経験がありましたので何か同じ悩みにがある人がいれば助けになれば嬉しいです
参考:How do I list (po) the contents of a Swift Array?
参考:Swift Debugging Tips
参考:Xcode Debugger: view value of variable
ダンプ処理(dumpに似た処理)
いろんな方法があります。Consoleでp(Rawダンプ=print)やpo(Objectダンプ=print description of the object), frame variableのfr vコマンドなんかもあります。
UIViewControllerの場合
println
ViewControllerのクラスインスタンスを利用して説明します。
override func viewDidLoad() {
super.viewDidLoad()
println(self);//debugTestProject.ViewController: 0x7f9a18c9da10
}
description -> (結果)printlnと同じ
override func viewDidLoad() {
super.viewDidLoad()
println(self.description);//debugTestProject.ViewController: 0x7f9a18c9da10
}
debugDescription -> (結果)printlnと同じ
override func viewDidLoad() {
super.viewDidLoad()
println(self.debugDescription);//debugTestProject.ViewController: 0x7f9a18c9da10
}
Consoleでpo
XCodeをBreakpointで止めてConsole上でpoで出力した場合は継承されている階層が表示されています。NSObjectとUIResponderを継承したUIViewControllerであることが分かります。
po self
0x00007f9a18c9da10
{
UIKit.UIViewController = {
UIKit.UIResponder = {
ObjectiveC.NSObject = {}
}
}
}
UIImageの場合
println
let url = NSURL(string:"http://swift-salaryman.com/files/image/page_top.gif");
var err: NSError?;
var imageData :NSData = NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!;
var img = UIImage(data:imageData);
println(img);//Optional(UIImage: 0x7f85784be710)
description -> (結果)printlnと同じ
println(img?.description);//Optional(UIImage: 0x7f85784be710)
debugDescription -> (結果)printlnと同じ
println(img?.debugDescription);//Optional(UIImage: 0x7f85784be710)
consoleでpo
po self
UIImage: 0x7f85784be710
Dictionaryの場合
println
var hogeDic: Dictionary = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
println(hogeDic);//[title: swift-salaryman, url: http://swift-salaryman.com/]
description -> (結果)printlnと同じ
println(hogeDic.description);//[title: swift-salaryman, url: http://swift-salaryman.com/]
debugDescription -> (結果)printlnと同じ
println(hogeDic.debugDescription);//[title: swift-salaryman, url: http://swift-salaryman.com/]
consoleでpo
po hogeDic
{
[0] = (key = "title", value = "swift-salaryman")
[1] = (key = "url", value = "http://swift-salaryman.com/")
}
ダンプ処理(Consoleのpo)をもっと簡単に
上で色々記載しましたがデバッグログ表記はXCodeのIDEから簡単に表示させることができます。
左下の変数リストの該当変数の上にカーソルを移動させて、、、右クリックのメニューを表示させて、Print Description of "XXXXX"をクリックします
コンソールに結果が表示されます。
Printing description of hogeDic:
([String : String]) hogeDic = {
[0] = (key = "title", value = "swift-salaryman")
[1] = (key = "url", value = "http://swift-salaryman.com/")
}
型も表示されているので一番詳細なのは右クリックからのデバッグのようです。表示も一番簡単なのでオススメです。
↓こんな記事もありますよ!
![]() | RSSリーダで利用するAPIを検証してみるニュースアプリの様なRSSを表示させたいのですがXMLを処理するAPIが数点存在するようです。 Swiftにあったものを見つけ出せたらと思います。 |
![]() | UIButton基本的なボタンを動的にコーディングだけで作成する説明をしています。 |
![]() | UITableViewCellをプログラムで動的に作成するUITableViewをStoryboardで作成する方法は結構ありますが、プログラムだけで作成するサンプルが少なかったので共有します。 |
Tweet
![]() |
|||
|