info

Home
[Swift]objective-cで書かれたクラスを扱う  @ App Develop , Swift , objective-c 2015年4月14日
objective-cで書かれたクラスを扱う

1.「Common-Bridging-Header.h」というヘッダーファイルを作成する
*ファイル名は任意

2.Common-Bridging-Header.hに下記を記述する
#import "EGODatabase.h"

3.PROJECT -> Build Settings -> Swift Compiler – Code Generation
-> Objective-C Bridging Headerに作成したファイル名を設定する
Objective-C Bridging Header

4.普通に扱う
let ego:EGODatabase = EGODatabase(path: "\(NSHomeDirectory())/Documents/ultrawoman.db")
private init(){
    self._initSystemTable()
}
private func createTableWithTableName(tableName:String, columnInfo:String) -> Bool{
    let query:String = "CREATE TABLE IF NOT EXISTS '\(tableName)' (\(columnInfo));"
    let result:EGODatabaseResult = self.ego.executeQuery(query)
    if 0 < result.errorCode {
        return false
    }
    return true
}
private func _initSystemTable(){
    let table:String = "id INTEGER PRIMARY KEY AUTOINCREMENT,key TEXT DEFAULT '',value TEXT DEFAULT '',modified TEXT,created TEXT"
    let result:Bool = self.createTableWithTableName(self.tableNameOfSystem, columnInfo: table)
}
[Swift]AutoLayout後のframeを取得  @ App Develop , Swift 2015年4月12日
AutoLayout後のframeを取得
override func viewDidLoad() {
    super.viewDidLoad()
    let width:CGFloat = self.someView.frame.size.width//AutoLayout前の値が取得できる
}
override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    let width:CGFloat = self.someView.frame.size.width//AutoLayout後の値が取得できる
}
[Swift]クラス名取得  @ App Develop , Swift 2015年4月11日
クラス名取得

設定
extension UIViewController {
    var className:String{
        get{
            return NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
        }
    }
}

実行
println("\(self.className) - \(__FUNCTION__) \(__LINE__) @ \(__FILE__)")
[Swift]クロージャ  @ App Develop , Swift 2015年4月9日
クロージャ objective-cにおけるブロック

宣言
typealias ChangeMonthClosureType = (year:Int,month:Int) -> () //型に別名を付ける
var closureOnChangeMonth:ChangeMonthClosureType?

設定
self.msvc.closureOnChangeMonth = {
    (year:Int,month:Int) -> () in
    println("closureOnChangeMonth year:\(year) month:\(month)")
}

実行
self.closureOnChangeMonth?(year: self._year, month: self._month)
[Swift]参照渡し  @ App Develop , Swift 2015年4月8日
参照渡し
class func addMonthWithYearMonth(inout ym:(year:Int,month:Int),addMonth:Int){
    var y:Int = ym.year
    var m:Int = ym.month + addMonth
    while 12 < m {
        m -= 12
        y++
    }
    while m < 1 {
        m += 12
        y--
    }
    ym.year=y
    ym.month=m
}