2012-03-06 8 views
0

テーブルビューを作成するために必要な実際の値をNSMutableArrayに渡して、NSViewのデータソースをNSArrayからNSMutableArrayに変更するとエラーが発生します。NSMutableArrayエラーからのUITableViewの設定

エラー:-74 2012-03-06 12:長い は、33:27:58.380 X [606:FB03] - [__ NSCFNumber isEqualToString:]:であるLAT

未認識セレクタに送信インスタンス0x6b64280 2012-03-06 12:27:58.381 X [606:FB03] *によりキャッチされない例外 'NSInvalidArgumentException'、理由にアプリを終了: ' - [__ NSCFNumber isEqualToString:]:未認識セレクタインスタンス0x6b64280に送ら'

元の方法で私はself.measurementを設定していて、self.subinfoはコメントアウトされています。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  NSIndexPath *)indexPath 
{ 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MeasurementCell"]; 

switch (indexPath.section) 
{ 
    case kMeasurement: 
     cell.textLabel.text=[self.measurements objectAtIndex:indexPath.row]; 
     cell.detailTextLabel.text=[self.subinfo objectAtIndex:indexPath.row]; 
     break; 
    default: 
     [email protected]"Unkown"; 
} 
return cell; 
} 

- (void)viewDidLoad 
{ 
appdelegate = [[AppDelegate alloc]init]; 

//get lat 
NSArray* fmArray = [appdelegate fetchEvents:@"Field_Measurement"]; 
NSMutableArray* latBindArray = [[NSMutableArray alloc]init]; 
NSMutableArray* longBindArray = [[NSMutableArray alloc]init]; 
for (Field_Measurement *fm in fmArray) 
{ 
    [latBindArray addObject:fm.latitude]; 
    NSLog(@"lat is: %@", fm.latitude); 
} 

for (Field_Measurement *fm in fmArray) 
{ 
    [longBindArray addObject:fm.longitude]; 
    NSLog(@"long is: %@", fm.longitude); 
} 

self.measurements = latBindArray;//[[NSArray alloc]initWithObjects:@"03/05/2012 @ 15:12", @"03/05/2012 @ 11:11", nil]; 
self.subinfo = latBindArray;//[[NSArray alloc]initWithObjects:@"Beta: 0.0234",@"Alpha: 3.977", nil]; 
[super viewDidLoad]; 
} 

これが私の最初のテーブルビューの試み(とObjective-Cのすべて一緒に新しい)とても参考になるNSMutableArrayのからテーブルビューを移入する方法の任意のアイデアです。私はsqliteデータベースを持っているので、私はこれらのレコードを引き出しています。

おかげ

答えて

1

あなたがするNSNumberの代わりに、NSStringのにcell.textLabel.textを設定しようとしている表示されます。 self.measurementsにはNSNumberオブジェクトが設定されているため、最初に文字列に変換する必要があります。

は、これらの行にこれらの

cell.textLabel.text=[self.measurements objectAtIndex:indexPath.row]; 
cell.detailTextLabel.text=[self.subinfo objectAtIndex:indexPath.row]; 

を変更してみてください:

cell.textLabel.text=[NSString stringWithFormat:@"%@", [self.measurements objectAtIndex:indexPath.row]]; 
cell.detailTextLabel.text=[NSString stringWithFormat:@"%@", [self.subinfo objectAtIndex:indexPath.row]]; 
+0

、私はそれが鋳造問題だった考え出したが.textセクションがクリックされなかったいくつかの理由のために:限り配列(これはあなたの配列がmyTableViewDataと呼ばれていると仮定し)からテーブルビューを取り込むよう

。アロンに感謝 – BamBamBeano

2

まず最初にデータを取得するためにアプリケーションデリゲートを使用しないことです。あなたのVC内のメソッドを使用して取得するか、より良い方法で、カスタムクラス(モデル)を作成して必要なデータを取得し、ViewController(コントローラ)に渡します。それthatsの

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [myTableViewData count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // This assumes you are using Storyboard and have declared your Dynamic Prototype Cell Identifier 
    OnCallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 

    NSDictionary *selRow = (NSDictionary *)[myTableViewData objectAtIndex:indexPath.row]; 
    // Do the rest of your processing here 

    return cell; 
} 
関連する問題