swiftコマンドライン開発メモ

Xcode6-Beta対象 last update 6/7

コンパイル、実行

OSXフレームワーク付きコンパイル

> /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -sdk /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk hoge.swift

即時実行

> /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -sdk /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -i hoge.swift 

コマンドライン用フレームワーク

import Foundation

だけでよい?

標準入出力

let standardInput = NSFileHandle.fileHandleWithStandardInput()
while true {
    let input = standardInput.availableData
    if input.length == 0 { break }
    var datastring = String(NSString(data:input,encoding:NSUTF8StringEncoding))
    print(datastring )
}

コマンドライン引数

let arguments :String[] = NSProcessInfo.processInfo().arguments.map{String($0 as NSString)}
println(arguments)

または

var args = String[]()
for index in 0..C_ARGC {
    args.append(String.fromCString(C_ARGV[Int(index)]))
}

ファイル読み書き

ファイルハンドルで読み込み

// ファイルハンドルを作成する
let filePath = "targetfile"
var fileHandle = NSFileHandle(forReadingAtPath:filePath)
if fileHandle == nil {
    println("file cannot open.");
    exit(-1)
}
// ファイルの末尾まで読み込む
let data:String = NSString(data:fileHandle.readDataToEndOfFile(),encoding:NSUTF8StringEncoding)
println(data)

NSStringのイニシャライザで読み込む

var err:NSError? = nil
let ns = NSString(contentsOfFile:"targetfile",encoding:NSUTF8StringEncoding,error: &err)
if err == nil { let str = String(ns)
    println( str )
} else{
    println("file read error")
    println(err.description)
}

Stringのメソッドで書き込み

data = "hello"
data.writeToFile("hoge",atomically:true,encoding:NSUTF8StringEncoding)

Tips

 NSStringとStringは自動相互変換するが、片方にしかないメソッドを使う場合は明示的な型宣言が必要?

標準出力へのフォーマット出力はNSLogが使える。


この記事が気に入ったらサポートをしてみませんか?