flyingbirdのiPhoneアプリ開発記録

- PolyRhythmの中の人がiPhoneアプリ開発中に思ったことを記録するブログです -

【Swift】Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1

エラー発生

  • Xcodeをver8からver8.1に上げたら掲題のエラーが起き始めた。
    Clean→Buildも効果が無かった。。。と思ったら、Cleanには
    普通のCleanと、今までのBuildで作られた中間ファイル等も
    消してくれる、BuildフォルダのCleanというのがあるらしい。
    XcodeのメニューからCleanを選択するときにOptionボタンを押すと、
    Cleanのメニューが Clean Build Folder...に変わるので、
    そいつを実行すると、エラーが解消された。
    やっぱりエラーの時はどんなエラーが起きたかだけじゃなくて、
    何をすべきかを表現して欲しいとつくづく思う今日このごろ・・・


エラー内容

Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1...


参考サイト

ez-net.jp

【Swift】Swift3のsubstring

使いづらい

  • Swift3の話・・・とある文字列から、所謂、どこから何文字って抜きたいときって、Int使って簡単に出来ないのかな〜〜
    とりあえず、以s下のやり方で落ち着こうとしているのだが。。。遠回しやな〜〜
let a = "abcdefghijklmnopqrstuvwxyz"
let from = a.index(a.startIndex, offsetBy: 5)
let to = a.index(from, offsetBy: 10)
print(a.substring(with: Range(from..<to)))
// fghijklmno

【Swift】NSTimer 一定の間隔であるメソッドを呼びたい場合

flyingbird.hatenablog.com

リンクの記事・・・NSTimerでメソッドを一定間隔で呼びたい!!!をSwiftへ変換するとこうなる・・・
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Swiftでとあるメソッドを一定の間隔で呼びたい場合の実装方法です。
以下のようにNSTimerのscheduledTimerWithTimeInterval(_:target:selector:userInfo:repeats:)を使うとそんな事が出来ます。
パラメータは・・・
_(timeInterval)は何秒間隔で繰り返すか。
targetはどのオブジェクトのメソッドか。
selectorは呼ぶメソッド。
userInfoは何でも渡せるみたい。AnyObject?型。
repeatsは繰り返すか繰り返さないか。

NSTimer.scheduledTimerWithTimeInterval:1.0 target:self selector:#selector(hoge(_:)) userInfo:nil repeats:true);

呼び出したいメソッドは以下のように定義。
パラメータにNSTimerを受け取る。

func hoge(timer: NSTimer) {
    // ここが実行される
}

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

Provisioning期限切れ更新メモ

iOS Provisioning Profilesの期限切れを更新する手順(リリース用)】

=== WEBブラウザでの作業 ===

1.Apple Developerサイトの"Certificates, Identifiers & Profiles"へ行く
  リンク:https://developer.apple.com/account/ios/certificate/
2.左のメニューから"Provisioning Profiles"の"Distribution"をクリックすると、
  右の"iOS Provisioning Profiles"欄にアプリの一覧が表示される
3.その一覧より該当の期限切れアプリをクリックする
4.該当アプリの詳細情報が表示されるので、"Edit"ボタンをクリックし、
  "Edit iOS Provisioning Profiles"へ遷移する
5."Certificates"の欄に"No Certificates are available."と表示されるので、
  "Create Certificate"ボタンをクリックする
6."Add iOS "Certificate"”画面へ遷移するので、順次情報を入力し、
  "Certificate"を作成する。基本は、前回作成時と同じになると思います
7."What type of certificate do you need?"ではリリース用なので"App Store and Ad Hoc"を
  選択し"Continue"ボタンをクリック
8."About Creating a Certificate Signing Request (CSR)"通りに、"Certificate"を作成します

=== KeyChainのでの作業 ===

9.MacのApplications(アプリケーション)フォルダ配下の"Utilities(ユーティリティ)"フォルダの
  中の"Keychain Access(キーチェーンアクセス)"を開きます。
10.メニューの"Keychain Access(キーチェーンアクセス)"から
  "Certificate Assistant(証明書アシスタント)"の
  "Request a Certificate from a Certificate Authority(認証局に証明書を要求...)"を
  選択し、"Certificate Information"入力画面を開きます
11."User Email Address"にメールアドレス、"Common Name"に秘密鍵の名称、
   "CA Email Address"は空。"Save to disk"を選択し、"Continue"ボタンをクリックする
12.適当な場所に保存します

=== WEBブラウザでの作業 ===

13."About Creating a Certificate Signing Request (CSR)"で"Continue"ボタンをクリックし
   "Generate your certificate."へ遷移する
14."Choose File..."ボタンをクリックし、先ほど作成した"Certificate"を選択する。
   "Continue"ボタンをクリックする
15."Your certificate is ready."の"Download"ボタンをクリックし、"Certificate"を
   ダウンロードする。

=== Finderでの作業 ===

16.ダウンロードした"Certificate"をダブルクリックし、"Keychain Access"へ登録する

=== WEBブラウザでの作業 ===

17.左のメニューから"Provisioning Profiles"の"Distribution"をクリックすると、
   右の"iOS Provisioning Profiles"欄にアプリの一覧が表示される
18.その一覧より該当の期限切れアプリをクリックする
19.上記で作成した"Certificate"を選択し、"Generate"ボタンをクリックする。
20."Your provisioning profile is ready."画面へ遷移したら、"Download"ボタンをクリックし、
   "provisioning"をダウンロードする。

=== Finderでの作業 ===

21.ダウンロードした"provisioning"をダブルクリックし、完了