30歳から始めたプログラミング -10ページ目

たまには褒めたいswift

別ファイルに作ったクラスの呼び出しがとてもシンプルになっています!

 

XcodeメニューのFileーNewーFileでiOSーSourceーCocoa Touch Class

からのUIViewControllerーswiftでクリエイト(ここまではObjective-c とほぼ一緒)

 

ファイルが出来たら適当にコード書いて呼び出し側で

 

let YobidasiClass: testFileViewController = testFileViewController()

let TukaitaiMethod = YobidasiClass.testMethod()

 

これだけで追加ファイルのクラスを呼び出せる!

Objective-cのような意味不明な設定やインポートでさえ必要ないのは非常に良いですね。

 

そうそうこう言うところなんですよね余計な設定はxcode側でやってもらって開発者にはコードに専念させてくださいよ。でないと統合開発環境の意味ないですから。

 

swiftというかswiftに合わせたxcodeの設定方法が良くなったってことかな?いずれにしろグッジョブですね!

Int型の数値から一部の数字を抜き出す方法

結論から言うとこんな感じ

 

let int = 345678

let str = String(int)    //一旦ストリングにする

//次に3文字目の次以降を切り取る

let newStr = str.substringFromIndex(advance(str.startIndex, 3)) 

let newInt = newStr.toInt()  //再度Intに変換する 結果:678

 

まずはint型をstring型に変換するここまでは良いのですが、次がswift1.1だからなのか

 

str.substringFromIndex(3)

 

とできずに何故か

 

str.substringFromIndex(advance(str.startIndex, 3))

 

と書かないとエラーになりました

 

ちなみにジャバスクリプトだと

 

var int = 345678;

var newInt = int.slice(3);

 

シンプルで好きです

 

 

AnyObject型の配列から取ったストリング型の数値をCGFloatにする方法

let array: AnyObject = ["aaa","6",["gg","uuuu"],"h"] 

 

let string = array[1] as String   //まず6をString型でとりだして

let int = string.toInt()   //それを一度Int型に変換して

let x:CGFloat = CGFloat(int!)  //やっとCGFloatになりました

 

swift1.1かswift1.2だかでの話

型を厳格に指定するのって進化なんですか?劣化じゃないんですか?

 

こんなつまづきばかりできついですが諦めずがんばります。

 

swiftの多次元配列って個別にデータ更新できないのか!

スイフトでは(Objective-cもだったかも)多次元配列の個別のデータ更新は出来ないようです。具体的には

 

var ary = ["aaa","bbb","ccc","ddd","yyyy"]

ary[2] = "uuu"

println(ary)     //→aaa,bbb,uuu,ddd,yyyyこれはできる

 

var ary = [["aaa","tt"],"bbb","ccc","ddd","yyyy"]

ary[2] = "uuu"    //ここでエラー

println(ary)     //→[aaa,tt],bbb,uuu,ddd,yyyyこれはできない

 

配列の便利さ半減ですねちなみにイミュータブルでもミュータブルでも関係ないようです。私の勘違いだったらいいのに・・・。

 

前々から思っていたのですが、アプリケーションのパフォーマンスやセキュリティはプログラマー側に任せて言語はなるべく簡単で自由にしてくれないかなぁ。Javascriptの様に。

 

さあコア部分の設計をやり直すか!!!

操作間違えました

タップスポットストアに出てしまいました。

リリース日付決めても強制的にリリースされるんですね。覚えておこう。

 

アップストア

https://itunes.apple.com/jp/app/tappusupotto1/id1153786014?mt=8