2016-04-14 6 views
0

私は詳細ビューコントローラにdidSelectRowAtIndexPath(特に3つの値:ユーザー名、バイオと写真)を通じてデータを渡しています。didSelectRowAtIndexPathを介してデータを渡すと、詳細ビ​​ューで表示するとクラッシュエラーが発生しますか?

データは私のNSDictionaryの、neigbourDetailに正常に渡しますが、ラベル(OtherUserViewController)の私の詳細ビューで表示しようとしたとき、この行はクラッシュエラーが発生します。

OtherUserViewController.m

self.username.text = [[neighbourDetail objectForKey:@"users_name"] objectAtIndex:0]; 

クラッシュエラーは、次のとおりです。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString objectForKey:]: unrecognized selector sent to instance 0xa00bc50441082e58'

私は理由を整理することができないようです。下のInitial View、およびOtherUserViewController(詳細ビュー)で返されるデータを参照してください。代わりにクラッシュラインを書くべきですか?

ViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    OtherUserViewController *vc = [sb instantiateViewControllerWithIdentifier:@"OtherUserViewController"]; 

    vc.neighbourDetail= self.neighbourData[indexPath.row][@"userbio"]; 
    vc.neighbourDetail= self.neighbourData[indexPath.row][@"photo_path"]; 
    vc.neighbourDetail= self.neighbourData[indexPath.row][@"users_name"]; 


    UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController; 
    [navController setViewControllers: @[vc] animated: YES]; 

    [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; 

} 

データは

2016-04-14 14:59:30.877 myapp[5396:1739868] This is the neighbourdata (
     { 
     address = "Address is here"; 
     "photo_path" = "http://url.com/default/files/stored/1459887925.jpg"; 
     "profile photo" = "<img typeof=\"foaf:Image\" src=\"http://url.com/default/files/stored/1459887925.jpg\" width=\"750\" height=\"732\" alt=\"\" />"; 
     uid = 47; 
     userbio = "Hi my name is Blair"; 
     "users_name" = Blair; 
    }, 
+1

あなたは辞書を 'neighbourDetail'に渡すわけではありません。それを3つの異なる文字列に設定しています。 'vc.neightbourDetail = self.neighbourData [indexPath.row]' – dan

+0

'self.username.text = [[neighbourDetail objectForKey:@" users_name "] objectAtIndex:0];'また、あなたの "users_name "は文字列であり、配列ではありません – dan

+0

@danありがとうございます! :) 一定。 –

答えて

-1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    OtherUserViewController *vc = [sb instantiateViewControllerWithIdentifier:@"OtherUserViewController"]; 

    vc.neighbourDetail= self.neighbourData[indexPath.row]; 

    UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController; 
    [navController setViewControllers: @[vc] animated: YES]; 

    [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES]; 
} 

を返さそして、あなたはそれを使用しようとすると:

self.username.text = self.neighbourDetail[@"users_name"]; 
関連する問題