SSブログ

Swiftで簡単なiOSブラウザアプリを製作(その2) [Swift]

ベースとなるプロジェクトができたので、ビルドして実行してみます。
その前にiPhone 5sで表示する前提なので、active schemeをiPhone 5sに設定します。
active schemeを設定するには、Xcodeの画面上部のツールバーのiPhone 6のアイコンをiPhone 5sのアイコンに変更します。
active scheme

次にビルド&実行するのでツールバーの左側の再生ボタンを押します。
スクリーンショット 2015-06-06 19.53.44.png
ビルドが始まり、エラーもなくビルドが成功し、しばらくするとiOSシミュレータが起動します。
iOSシミュレータが起動するとビルドしたSimpleBrowserが起動します。

スプラッシュ画面が表示された後、真っ新で何もない画面が表示されます。
splash screen

first init screen
この画面からブラウザの基本的な機能を追加していきます。



タグ:SWIFT IOS XCode
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

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ボタンをクリックします。
Select Project Tempate

Product NameをSimpleBrowserにして、
Organization Nameは自分のユーザ名、Organization Identifierはドメイン名の逆にした文字列を適当に入力します。
LanguageはSwiftにし、DeviceはとりあえずiPhoneにしておきます。
Use Core Dataはとりあえずチェックを外しておきます。
Project Setup

次にプロジェクトファイルを保存する場所をXcodeがきいてくるので、適当な場所を指定します。
General
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

Swiftのクラスのコンダクタ [Swift]

Swiftのクラスのコンダクタは、C++やJavaのようにクラス名と同じ名前のメソッドを定義するのではなく、initという特殊名のメソッドで定義します。

例:
class TestClass {
    var message = ""

    init() {
        message = "Hello"
    }

    func simpleDescription() -> String {
        return message
    }
}


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

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> 


タグ:SWIFT repl
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

Objective-CのカテゴリはSwiftではextensionを使う [Swift]

Swiftのマニュアルには、Objective-Cのクラスのカテゴリの記述方法が書かれていませんてした。
このカテゴリの機能は、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文の条件判定部分がかなり強力になっているようです。
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から公開されているのでいろいろ読んでいるのですが、変数名に絵文字が使えたりするようです。

0123456789ABCDEF
U+004xABCDEFGHIJKLMNO
U+005xPQRSTUVWXYZ
U+006xabcdefghijklmno
U+007xpqrstuvwxyz
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
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。