[iOS]warning : incompatible Objective-C types assining ‘struct NSArray’ ~

ついでにこんなワーニングも。

 

なにをしようかというと、NSMutableArray NSString を入れて名前リストを作り、それをソートしようとしていた。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NSMutableArray* a = [[NSMutableArray alloc] init];
 
[a addObject:@"22382"];
[a addObject:@"32722"];
[a addObject:@"00487"];
[a addObject:@"98320"];
[a addObject:@"11732"];
[a addObject:@"30532"];
 
a = [a sortedArrayUsingSelector:@selector(compare:)];
 
for (int i = 0; i < [a count]; i++)
{
  // 綺麗に数字が並ぶはず
  NSLog(@"%@", [a objectAtIndex:i]);
}

 

NSString には比較に使えるメソッド compare があるのでこれで OK だろう。と思いコンパイル。すると、

 


incompatible Objective-C types assining ‘struct NSArray *’, expected ‘struct NSMutableArray *’


 

ああなるほど、NSArray じゃ駄目か。って全く NSArray など記述した記憶がない。

エラーメッセージを頼りに海外のサイトなど見るも、

 


問についてあなたの最初の、いつ NSLogは 形式%@を見て、それが使用する 記述 クラスメソッドをしてください。 


 

日本語難しいネ! 自動翻訳に頼るのがそもそも間違いか・・・。

エラーではなく別のキーワードでググりなおすことにした。文字列リストのソートならいっぱい他にも例があるだろうし。

というわけで、解決策はこうだった。さきほどの 10 行目を置き換える。

 

 

1
[mfiles sortUsingSelector:@selector(compare:)];

 

どうしてこうなのか? わからん・・・と思ったが、戻りもらってるってことはむしろ

NSArray で使え、って警告・・・?

英語も自動翻訳、xcode も初めて日も浅い自分はこれ以上深入りせず。とりあえず動いたからヨシ。

Posted under 未分類 by akira on 日曜日 27 2月 2011 at 10:49 PM

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする