*

Swift(Xcode6-Beta2)でStringのメソッド(stringByReplacingCharactersInRange:withString:)のコンパイルが通らない時の対処

公開日: : Swift


スポンサードリンク



SwiftでStringのメソッド
stringByReplacingCharactersInRange:withString:
のコンパイルが通らなくて困ってしまいました。Objective-CのNSStringとSwiftのStringは何やら異なるところが
あるとはある程度認識していたのですが・・・
まだベータ版なんで、それは本質的な違いなのか、バグなのか、実装が間に合ってないだけなのか不明ですが・・・

利用している環境はXcode-Beat2です。

StackOverflowに以下のやり取りがありました。
「stringByReplacingOccurrencesOfString is not working?」

Keep in mind that Foundation’s types are different from Swift’s types. A String in Swift is not an NSString

なんだそうです。やはりそうなんですかね・・・

同じくStackOverflowにに以下のやり取りがありました。
「Using stringByReplacingCharactersInRange in Swift」

コンパイル時のエラーメッセージも同じですね
あたりまえか・・・

最後の方のやり取りを見ると単純にバグっぽいですね・・・、私の英語力ではそう読み取りましたが、自信はないです。

Objective-CでstringByReplacingCharactersInRange

Objective-Cの確認用にテストケース(XCTestフレームワーク)を作成してましたが、当然テストは成功します。

SwiftでstringByReplacingCharactersInRangeのコンパイルエラー

同様にSwiftで確認用にテストケース(XCTestフレームワーク)を作成しましたが、コンパイルエラーが発生します。

エラーは以下の画面の通りです。

スクリーンショット 2014-07-05 22.09.20

他の回避方法もあるのかもしれませんがbridgeToObjectiveC()を経由して、
NSStringクラスのインスタンスメソッドとしてstringByReplacingCharactersInRangeを呼び出すように変更しました。

変更後のコード

テストは成功しました。うーん、
とりあえずSwiftのStringのメソッドが変なコンパイルエラーを出力するときはbridgeToObjectiveC()を使うことにします。
当然コストはかかっているでしょうけど・・・、コンパイル通らないとどうしようもないですよね。
最終的には、Xcode6の正式版での確認時にbridgeToObjectiveCを外すかを考えます。


スポンサードリンク

Googleアドセンス

Googleアドセンス




関連記事

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジェクトをくらいながら、開発開始

記事を読む

Xcode6とSwiftで画面コンポーネント(UIコンポーネント)を配置して利用するための基本

当然ですが、iOS向けのアプリケーションを作成するためには、 画面に画面コンポーネント(UIコンポ

記事を読む

Swift入門[公式リファレンスのチュートリアルのSteps2の前半]

「Swift」と「Xcode 6」を少しずつさわっていこうと思ってはいるのですが、「Xcode 6

記事を読む

Xcode6とSwiftでイメージ(画像)やアニメーションを表示する方法

本エントリーでは、Xcode6(言語はSwift)を利用してイメージ(画像)やアニメーションを表示す

記事を読む

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第一回「Swiftの概要」 

Swiftの簡単な説明 アップルのiOS(iOS8以降)およびOS Xのためのプログラミング言語。

記事を読む

Xcode6_Beta5&SwiftでUITableViewでUINibを使ったカスタムセル(UITableViewCell)を利用する方法

前回は、「Xcode5&Objective-CでUITableViewでUINibを使ったカ

記事を読む

Xcode6-Beta3でSwiftでBDDを行うためにQuickを導入しようと思ったが、all-product-headers.yaml:4:13: error: Could not find closing ]!が発生する

そろそろQuickを利用しようと思いまたまたハマりました。というかハマり中です。 「Quick

記事を読む

Xcode6-Beta2でSwiftのユニットテスト(Unit Test)をXCTestフレームワークで試してみる。

タイトルの通りですが、Xcode6-Beta2でSwiftのユニットテスト(XCTestフレームワー

記事を読む

Xcode6-Beta3でSwiftでBDDを行うためにQuickを導入し動作させる手順

Clone the repository Create a using Quick Pro

記事を読む

Xcode6(xcode_6_beta_7、Xcode 6 GM seed)のインストール方法

2014年9月22日追記 Xcode6の正式版がリリースされApp Storeからインストール可能

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジ

no image
Ruby on rails4系でBootstrapを利用するためのtips

MacでRuby on rails4系のBootstrapを利用しよう

no image
Java、Eclipse、JUnit関連のエントリーの移行のお知らせ

Java、Eclipse、JUnit関連のエントリーは http:/

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第二回「関数(メソッド)とクロージャーの利用方法」

前回はSwiftの概要をザックリと説明させていただきました。 今

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑