たけぞうBLOG

iOS,XCode,Cameraなど

Swift Xcode6

Swiftでデバッグ用にLOGやLOG_METHOD()を使いたい

投稿日:5月 17, 2015 更新日:

Objective-Cで使っていたLOGやLOG_METHODといったマクロをSwiftでも同様に使いたかったので作りました。 ソースコードはGithubに公開しています。 https://github.com/takezou621/SwiftLogging

環境

  • Xcode 6.3.1
  • Swift 1.2

準備

1.XcodeのBuild Settings

Xcodeから使用するプロジェクト名を選択し、TARGETSで該当ターゲットを選択します。 さらにBuild Settingsを選択し、Swift CompilerのOther Swift Flagsで
Debug = -DDEBUG
となるようにしてください。

2.GlobalConstants.swift追加

ファイル名は何でも良いのですが、ここではGlobalConstants.swiftというファイルを作成し、下記のような定義を追加します。
#if DEBUG
    func LOG(msg:Any) {
        println(msg)
    }
    func LOG_METHOD(funcName:String = __FUNCTION__,lineNum:Int = __LINE__ ){
        println(\"(funcName)\",\"(lineNum)\")
    }

#else
    func LOG(msg:Any) {}
    func LOG_METHOD() {}
#endif
これで、Build ConfigurationがDebugに設定しているときだけ、任意の場所にLOG()やLOG_METHOD()を記述しておくとコンソールにログが出力されます。

使い方

override func viewDidLoad() {
    super.viewDidLoad()
    LOG_METHOD() // メソッド名と行数を出力します
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    LOG_METHOD() // メソッド名と行数を出力します
    LOG(animated) // 任意のパラメータを出力します
}
コンソールにこのように出力されます。
(viewDidLoad(), 14)
(viewDidAppear, 20)
false
Objective-Cで使っていたLOG,LOG_METHODと同じように使えると思います。

-Swift, Xcode6
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

iOS8でCoreLocationを使用する際の注意点

iOS8でiBeaconのサンプルコードを書いていたのですが、何故かプライバシー設定のダイアログが表示されず悩んでいたのですが、原因は以下のキーをInfo.plistに追加していなかったからでした。 …

Xcode6のView Debugging使い方

View Debuggingとは? Xcode6の新機能で、iOSアプリ開発時のview階層を視覚的に確認できる機能のようです。 これまでview階層を視覚的に表示する手段がなかったので、このようなデ …

Amazonで76円!Lightning Micro USB 変換アダプタをiPhone6で試してみた

microUSBケーブルが余ってたので、iPhoneでも使えるようにLightning Micro USBの変換アダプタを購入してみました。 Appleの純正品は1,900円もするのですが、ノーブラン …

[Swift]UINavigationBarの背景を透明にする

いつも忘れるのでメモ self.navigationController?.navigationBar.setBackgroundImage(UIImage.new(), forBarMetrics: …

[Swift]WatchKitで”error: WatchKit Extension doesn’t contain any WatchKit apps whose bundle identifiers match 〜”と怒られた

WatchKit対応のアプリをストア公開用にビルドする際、以下のように怒られたので対処メモです。

プロフィール


1972年神奈川県生まれ。ソフトウェアエンジニアとして生きています。最近はクライアントアプリからサーバーサイドまで幅広くやってます。