*

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(Xcode6とSwift)におけるマルチスレッド処理の実装方法その1[NSThreadクラスの簡単な利用例]

前回はObjective-CにおけるNSThreadクラスの簡単な利用例を取り扱いましたが今回は、ほ

記事を読む

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

「Swift入門」では、Steps2の前半まで説明させていただきました。 本エントリーでは、

記事を読む

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

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回は同じ著者(大重美幸様)の本を

記事を読む

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

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

記事を読む

Xcode6(Swift)のデリゲートとプロトコルの使い方

Xcode(Objective-C)のデリゲートの使い方では利用言語がObjective-Cの時のデ

記事を読む

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

前回はSwiftの概要をザックリと説明させていただきました。 今回は「メソッドの宣言方法」をよ

記事を読む

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

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

記事を読む

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

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

記事を読む

iOS(Xcode6とSwift)におけるマルチスレッド(非同期)処理の実装方法その2[GCD(Grand Central Dispatch)の利用]

「iOS(Xcode6とSwift)におけるマルチスレッド処理の実装方法その1」ではNSThread

記事を読む

Xcode6の正式版がリリースされApp Storeからダウンロードしインストール可能になりました。

ついにSwiftが利用できるXcode6の正式版がリリースされました。 ブラウザからMac App

記事を読む

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 ↑