2012-03-24 8 views
0

私はrestkit googleグループでこの質問をしましたが、実際にはRK特有の問題ではなく、インスタンスに送信された認識できないセレクタ - UITableViewとRestkit LoadObjectsオプション

私は数時間このサークルで回っています。私はWebサービスから取得し、RestKitsオブジェクトマッピングを使用してオブジェクトに格納されたデータをUITableViewに取り込みしようとしています。サービスに当たって、オブジェクトをすべて保存すると美しく動作します。

問題は、テーブルの再読み込みを試みたときです。このエラーが発生します。

'NSInvalidArgumentException', reason: '-[CoursesModel text]: unrecognized selector sent to instance and then app shuts down and 

takes me here: 
@autoreleasepool { 
return UIApplicationMain(argc, argv, nil, 
NSStringFromClass([RoundShoutAppDelegate class])); 
} 
Thread 1: signal SIGABRT 

CoursesModelはモデルIの設定です。テーブルビューのデリゲートをクラスとして指定しなかった場合、コースはテーブルビューに完全にロードされます。しかし、私はdidSelectRowAtIndexPathでセルの1つをクリックしようとするとエラーが発生します。 デリゲートを指定する必要があるという事実に焦点を当てると、何かが本当にうんざりしています。 。

私はとき、それはいけない何かがリリース取得されていますが、データは_courses配列である。これは、方法によって、ARCプロジェクトであると仮定しています。

ここで適切なコードの一部ですが、もしあなたが必要とするより多くの私に教えて。誰もが素晴らしいだろう正しい方向に私を指すようにまったく情報を持っている場合は!あなたの助けをありがとう!

MainViewController.h 
@interface MainViewController : UITableViewController <CLLocationManagerDelegate, RKObjectLoaderDelegate, UITableViewDelegate, UITableViewDataSource> { 
IBOutlet UITableView *coursesTableView; 
NSArray *_courses; 
} 

@end 

CoursesModel.h

@interface CoursesModel : NSObject { 
NSNumber* _courseID; 
NSString* _courseName; 
NSString* _city; 
NSString* _state; 
NSNumber* _distance; 
} 

@property (nonatomic, retain) NSNumber* courseID; 
@property (nonatomic, retain) NSString* courseName; 
@property (nonatomic, retain) NSString* city; 
@property (nonatomic, retain) NSString* state; 
@property (nonatomic, retain) NSNumber* distance; 
@end 

MainViewController.m

//Most of the code ommited for your sanity 
// All good up to this point 
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects: 
(NSArray*)objects { 
//NSLog(@"Loaded courses %@", objects); 
_courses = objects; 
// There is data in _courses. 
NSLog(@"Loaded courses in array %@", _courses); 
[coursesTableView reloadData]; 

デリゲートメソッド:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CGSize size = [[[_courses objectAtIndex:indexPath.row] text] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 9000)]; 
return size.height + 10; 
} 
+0

何かが-textという名前のメソッドを呼び出しています。存在する場合は、そのメソッドをポストします。 – CodaFi

+0

私のコードで知る限り、ここで "テキスト"が直接参照される場所は - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { \t CGSize size = [[ _courses objectAtIndex:indexPath.row] text] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300、9000)]; \tリターンサイズ。高さ+ 10; } ---しかし、私はそれをコメントし、テストに50を返し、エラーはまだそこにあります。だから私はそれをisnしていると推測している –

+0

@CodaFi - これを見てくれてありがとう。より多くのコードが必要な場合はお知らせください。私はコードスニペットがあなたが探している "テキスト"リファレンスではないので、他の場所で掘り下げて喜んでいます。再度、感謝します! –

答えて

2

を私は今、それを参照してください!デリゲートメソッド

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

CGSize size = [[[_courses objectAtIndex:indexPath.row] text] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 9000)]; 

return size.height + 10; 

} 

が間違っています。 NSArrayには-textというメソッドはありません。そのため、認識できないセレクターがNSArrayに送られます。コンパイラがこれについてあなたに警告しなかったのはなぜですか?文字列が必要な場合は、-stringValueを使用します。

デリゲートとしては、リロード時にデリゲートを設定してもこのメソッドが呼び出されないため、これは完全な意味があります。

+0

まず、提案のおかげで(と私の記事を適切な形式に修正する)。私はあなたが提案したように代議員を変更しました。しかし、今はエラーです:***キャッチされていない例外 'NSInvalidArgumentException'のためアプリを終了します、理由: ' - [CoursesModel stringValue]:インスタンスに送信された認識できないセレクタ何かがリリースされているという気がしますが、_courses配列データが入力されます。あなたの袖の上にもう少し魔法があるなら、私はすべての耳です!再度、感謝します! –

+0

これはありません.... stringValueを取り除いて、ただobjectAtIndex ...それはクラッシュする可能性があります、ちょうどエラーを投稿してください。 – CodaFi

+0

ここに行きます。あなたが予期したとおりにクラッシュしました:***キャッチされない例外 'NSInvalidArgumentException'の理由でアプリケーションを終了します: - [CoursesModel sizeWithFont:constrainedToSize:]:インスタンスに送信された認識できないセレクタ –

関連する問題