2009-08-16 15 views
1

私は文字列でplistから初期化しているNSMutableArrayを持っています。ObjectAtIndexを取り除くと警告に応答しない可能性があります

しかし、その配列のobjectAtIndexまたはremoveObjectAtIndexを実行しようとすると、「NSMutableArrayが....に応答しない可能性があります」という警告が表示され、実行時にも失敗します。

どうすればいいですか?

THXは

+4

警告が表示されているコードの正確な行(およびこれに先行する文脈)を記入してください。 –

答えて

0

これは、オブジェクトが実際にNSMutableArrayではありません、あなたはメソッド名をスペルミス、または(可能性が高い)のいずれかのように見えます。

タイプを確認する方法の1つです。これは、シミュレータで動作しますが、それはあなたの問題を解決するために役立つことができます:それはその行(:Xcodeでコマンド+ Shift + Rのショートカット)になったとき

#import <objc/runtime.h> 

// Later, when you've got the object x that you want to be an NSMutableArray: 
NSLog("The type of x is %s", class_getName([x class])); 

アプリのデバッグ出力を確認してください。

また、私はすでにこれを知っていると思いますが、objective-Cのメソッド名は大文字と小文字が区別され、引数があると最後にコロンが含まれています。だから、有効な呼び出しは次のようになります。

それは言及する必要はないようだが、私はあなたが間違いか何かで資本Oを使用念のため、私は私の答えで、より包括的だろうと思った場合
id gottenObject = [x objectAtIndex:0]; 

申し訳ありません。

1

NSMutableArrayをNSArray変数に格納すると、コンパイラは変数型に基づいて静的型定義を使用し、そのオブジェクトがNSArrayであり、したがって不変であるとみなします。したがって、NSMutableArray変数にNSArrayを格納しようとしている可能性があります。実行時にもエラーが発生します。文脈なしで言うのは非常に難しいですが、それは探求すべきことです。

関連する問題