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が使える。
この記事が気に入ったらサポートをしてみませんか?