The Pragmatic Ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

Swift

Swift2でArrayにArrayをinsertする

これまではsplice:atIndexでしたが items.splice(insertItems, atIndex: items.endIndex) Swift2(beta6以降)からinsertContentsOf:atに変わりました items.insertContentsOf(insertItems, at: 1) 例 var items = ["a", "b", "c"] let insertItems = ["1", "2…

Swift2でStringを指定した文字で分割

beta5でsplitの仕様がちょっと変わり、以下のようにすることで文字列を分割できます。 let string1 = "hoge" let string2 = string1.characters.split("o").map{ String($0) } // [h, ge] Swift2からStringはCollectionTypeではなくなり、Stringの保持するch…

SwiftでArray内のOptionalをunwrapする

なにを言っているのかよくわからないタイトルになってますが、 Array<T?>をArrayにする方法です。(Swift1.2以降) いろいろやり方はありますが、一番手短にかける方法は このようにflatMapにかけるだけ let array1: [String?] = ["1", nil, "2"] let array2 = arr</t?>…

Swift2でのbitmask

Swift2からRawOptionSetTypeがOptionSetType (OptionSetType Protocol Reference) に変わったため、 例えばUIViewAutoresizingの場合、 これまでは view?.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight だっ…

Swiftで引数リスト(CVaListPointer)の渡し方

SwiftからObjective-Cのメソッドを呼ぶ際に、引数が引数リスト(va_list)の場合、Swiftでは型が以下のようなCVaListPointerになります。 class func raise(_ name: String, format format: String, arguments argList: CVaListPointer) 結論からいきますと…

xcodebuildでdevice向けのビルドするときのdestinationの指定方法

以前xcodebuildのパラメータの指定方法についてこちらに書きました。 Travis CIでObjective-C/Swiftのテストを実行する - Pragmatic ball boy テストするときはシミュレータを指定するのでこれで問題ないのですが、 実機向けのstaticライブラリを用意したり…

SwiftでUnitTestするときに"Use of undeclared type"になる場合の対処法

テストを実行するとこういうエラーがでることがあると思います。 Use of undeclared type 'Todo' does not have a member named 'todo' import XCTest import TodoApp class TodoTests: XCTestCase { var todo: Todo! override func setUp() { super.setUp()…

Travis CIでObjective-C/Swiftのテストを実行する

[環境]Xcode 6.1 Swift,Objective-Cどちらの場合でもこの方法でいけるはずです。 Travis CIにドキュメントが用意されていますが、xctoolを使った例が示されているので無視したほうがよいです。xctoolはAppleが用意した標準のビルドツールではなく、Facebook…