Swiftで簡単なiOSブラウザアプリを製作(その2) [Swift]
ベースとなるプロジェクトができたので、ビルドして実行してみます。
その前にiPhone 5sで表示する前提なので、active schemeをiPhone 5sに設定します。
active schemeを設定するには、Xcodeの画面上部のツールバーのiPhone 6のアイコンをiPhone 5sのアイコンに変更します。
次にビルド&実行するのでツールバーの左側の再生ボタンを押します。
ビルドが始まり、エラーもなくビルドが成功し、しばらくするとiOSシミュレータが起動します。
iOSシミュレータが起動するとビルドしたSimpleBrowserが起動します。
スプラッシュ画面が表示された後、真っ新で何もない画面が表示されます。
この画面からブラウザの基本的な機能を追加していきます。
その前にiPhone 5sで表示する前提なので、active schemeをiPhone 5sに設定します。
active schemeを設定するには、Xcodeの画面上部のツールバーのiPhone 6のアイコンをiPhone 5sのアイコンに変更します。
次にビルド&実行するのでツールバーの左側の再生ボタンを押します。
ビルドが始まり、エラーもなくビルドが成功し、しばらくするとiOSシミュレータが起動します。
iOSシミュレータが起動するとビルドしたSimpleBrowserが起動します。
スプラッシュ画面が表示された後、真っ新で何もない画面が表示されます。
この画面からブラウザの基本的な機能を追加していきます。
Swiftで簡単なiOSブラウザアプリを製作(その1) [Swift]
Swift言語が発表されてからもうすぐ1年になり、iOS8もリリースされiOSアプリをSwiftで製作されてきているようです。
たくさんのSwift解説書が出版されてきているので、Swiftで簡単なiOSブラウザアプリを作成してみたいと思います。
iOSアプリを製作するには、Macと統合開発環境のXcodeが必要です。
Xcodeは、Mac版のみしかないので、できるだけ新しいMacを使用すると快適です。
Swiftは、Xcode v6.0から使えるようになったのでやはり最新版をApple Developer Programに開発者登録して入手します。
Xcodeが入手できたら、インストールし、Xcodeを起動します。
まずは、iOS ApplicationのSingle View Applicationのプロジェクトを作成します。
Fileメニュー > New > Project...
iOSのApplicationのSingle View Applicationを選択してNextボタンをクリックします。
Product NameをSimpleBrowserにして、
Organization Nameは自分のユーザ名、Organization Identifierはドメイン名の逆にした文字列を適当に入力します。
LanguageはSwiftにし、DeviceはとりあえずiPhoneにしておきます。
Use Core Dataはとりあえずチェックを外しておきます。
次にプロジェクトファイルを保存する場所をXcodeがきいてくるので、適当な場所を指定します。
たくさんのSwift解説書が出版されてきているので、Swiftで簡単なiOSブラウザアプリを作成してみたいと思います。
iOSアプリを製作するには、Macと統合開発環境のXcodeが必要です。
Xcodeは、Mac版のみしかないので、できるだけ新しいMacを使用すると快適です。
Swiftは、Xcode v6.0から使えるようになったのでやはり最新版をApple Developer Programに開発者登録して入手します。
Xcodeが入手できたら、インストールし、Xcodeを起動します。
まずは、iOS ApplicationのSingle View Applicationのプロジェクトを作成します。
Fileメニュー > New > Project...
iOSのApplicationのSingle View Applicationを選択してNextボタンをクリックします。
Product NameをSimpleBrowserにして、
Organization Nameは自分のユーザ名、Organization Identifierはドメイン名の逆にした文字列を適当に入力します。
LanguageはSwiftにし、DeviceはとりあえずiPhoneにしておきます。
Use Core Dataはとりあえずチェックを外しておきます。
次にプロジェクトファイルを保存する場所をXcodeがきいてくるので、適当な場所を指定します。
Swiftのクラスのコンダクタ [Swift]
Swiftのクラスのコンダクタは、C++やJavaのようにクラス名と同じ名前のメソッドを定義するのではなく、initという特殊名のメソッドで定義します。
例:
例:
class TestClass { var message = "" init() { message = "Hello" } func simpleDescription() -> String { return message } }
Swiftをシェルから実行するには [Swift]
Swiftをシェルから実行する(REPLで使う)には、swiftの実行ファイルが以下のパスにあるので
以下のようにシェルから実行します。
/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
以下のようにシェルから実行します。
$ /Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Welcome to Swift! Type :help for assistance. 1>
Objective-CのカテゴリはSwiftではextensionを使う [Swift]
Swiftのマニュアルには、Objective-Cのクラスのカテゴリの記述方法が書かれていませんてした。
このカテゴリの機能は、Swiftにはないのかな?と思ったのですか、Swiftではクラスの拡張(extension)を使えば実現できるようです。
例えば、Objective-CでNSObjectクラスにlogメソッドの追加をして、そのカテゴリをLoggingとすると、以下のように記述します。
これをSwiftでは、
と記述することになるようです。
Swiftのextensionでは、Objective-Cのように名前を付けることができないようです。
(上の例では、Logging)
このカテゴリの機能は、Swiftにはないのかな?と思ったのですか、Swiftではクラスの拡張(extension)を使えば実現できるようです。
例えば、Objective-CでNSObjectクラスにlogメソッドの追加をして、そのカテゴリをLoggingとすると、以下のように記述します。
@interface NSObject (Logging) - (void)log; @end @implemetation NSObject (Logging) - (void)log { NSLog(@"%@", self); } @end
これをSwiftでは、
extension NSObject { func log() { println(self) } }
と記述することになるようです。
Swiftのextensionでは、Objective-Cのように名前を付けることができないようです。
(上の例では、Logging)
Swiftのswitch文について [Swift]
Swiftのswitch文はC言語のswitch文を継承しているようですが、case文の条件判定部分がかなり強力になっているようです。
特に、
は、完全に式になっています。
それから、case文の実行部分からswitch外への脱出は、breakを書かなくてもよいようです。
しかし、default文は必ず必要のようです。
逆にC言語のswitchでのbreakを使わずに次のcaseの処理へフォールスルーさせるには、
そのものずばりのfallthroughを記述すると可能となるようです。
let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy \(x)?" default: let vegetableComment = "Everything tastes good in soup." }
特に、
case let x where x.hasSuffix("pepper"):
は、完全に式になっています。
それから、case文の実行部分からswitch外への脱出は、breakを書かなくてもよいようです。
しかし、default文は必ず必要のようです。
逆にC言語のswitchでのbreakを使わずに次のcaseの処理へフォールスルーさせるには、
そのものずばりのfallthroughを記述すると可能となるようです。
Swiftで変数名の頭で使用できる文字 [Swift]
昨日Appleの開発者向けコンファレンスWWDC 2014でObjective-Cに替わる新言語Swiftが発表されました。
言語仕様のドキュメントがAppleから公開されているのでいろいろ読んでいるのですが、変数名に絵文字が使えたりするようです。
U+0100〜U+178F ラテン文字拡張 A
U+1800〜U+024F ラテン文字拡張 B
U+0250〜U+02CF IPA発音記号拡張
U+02D0〜U+02FF 独立修飾文字
U+0370〜U+03FF ギリシア文字・コプト文字
U+0400〜U+04FF キリル文字
U+0500〜U+052F キリル文字増補
U+0530〜U+058F アルメニア文字
U+0590〜U+05FF ヘブライ文字
U+0600〜U+06FF アラビア文字
U+0700〜U+167F
U+1681〜U+180D
U+180F〜U+1DBF
U+1E00〜U+1FFF
U+200B〜U+200D
U+202A〜U+202E
U+203F〜U+2040
U+2054
U+2060〜U+206F
U+2070〜U+20CF
U+2100〜U+218F
U+2460〜U+24FF
U+2776〜U+2793
U+2C00〜U+2DFF
U+2E80〜U+2FFF
U+3004〜U+3007
U+3021〜U+302F
U+3031〜U+303F
U+3040〜U+D7FF
U+F900〜U+FD3D
U+FD40〜U+FDCF
U+FDF0〜U+FE1F
U+FE30〜U+FE44
U+FE47〜U+FFFD
言語仕様のドキュメントがAppleから公開されているのでいろいろ読んでいるのですが、変数名に絵文字が使えたりするようです。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U+004x | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
U+005x | P | Q | R | S | T | U | V | W | X | Y | Z | |||||
U+006x | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | |
U+007x | p | q | r | s | t | u | v | w | x | y | z | |||||
U+00Ax | ¨ | ª | | ¯ | ||||||||||||
U+00Bx | ² | ³ | ´ | µ | · | ¸ | ¹ | º | ¼ | ½ | ¾ | |||||
U+00Cx | À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï |
U+00Dx | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß | |
U+00Ex | à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï |
U+00Fx | ð | ñ | ò | ó | ô | õ | ö | ø | ù | ú | û | ü | ý | þ | ÿ |
U+0100〜U+178F ラテン文字拡張 A
U+1800〜U+024F ラテン文字拡張 B
U+0250〜U+02CF IPA発音記号拡張
U+02D0〜U+02FF 独立修飾文字
U+0370〜U+03FF ギリシア文字・コプト文字
U+0400〜U+04FF キリル文字
U+0500〜U+052F キリル文字増補
U+0530〜U+058F アルメニア文字
U+0590〜U+05FF ヘブライ文字
U+0600〜U+06FF アラビア文字
U+0700〜U+167F
U+1681〜U+180D
U+180F〜U+1DBF
U+1E00〜U+1FFF
U+200B〜U+200D
U+202A〜U+202E
U+203F〜U+2040
U+2054
U+2060〜U+206F
U+2070〜U+20CF
U+2100〜U+218F
U+2460〜U+24FF
U+2776〜U+2793
U+2C00〜U+2DFF
U+2E80〜U+2FFF
U+3004〜U+3007
U+3021〜U+302F
U+3031〜U+303F
U+3040〜U+D7FF
U+F900〜U+FD3D
U+FD40〜U+FDCF
U+FDF0〜U+FE1F
U+FE30〜U+FE44
U+FE47〜U+FFFD
タグ:SWIFT