Récuperer une ID dans une fonction

lincoln33lincoln33 Full-Time n00bMembre
Bonjour,



j'essaye de récuperer la valeur de mon NSString dans ma fonction void que j'ai écrite en dessous.


<br />
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath<br />
{<br />
    DataClass *obj=[DataClass getInstance];<br />
    NSString *pourLeLog = obj.str;<br />
    NSLog(@&quot;le data est : %@&quot;,pourLeLog);<br />
//ICI CA ME RETOURNE : le data est : 15<br />




et ici ca me retourne null


<br />
-(void)parsingJson{<br />
    DataClass *obj=[DataClass getInstance];<br />
    NSString *pourLeLog = obj.str;<br />
    NSLog(@&quot;le data est : %@&quot;,pourLeLog);<br />
//ICI CA ME RETOURNE : le data est : null<br />




comment puis-je faire ?



merci

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    Faut croire que quand ton parsingJSON est appelé, ton objet DataClass n'arrive pas à  s'initialiser...



    En fait, si tu veux de l'aide, il nous faudrait plus d'infos sur DataClass....
  • lincoln33lincoln33 Full-Time n00b Membre
    le Dataclass est une class qui me permet de passer des infos d'une vue à  l'autre mais la elle passe bien mais pas dans mon parsingJson



    voici mon dataclas
    <br />
    @synthesize str;<br />
    static DataClass *instance =nil;<br />
    +(DataClass *)getInstance<br />
    {<br />
        @synchronized(self)<br />
        {<br />
    	    if(instance==nil)<br />
    	    {<br />
    		   <br />
    		    instance= [DataClass new];<br />
    	    }<br />
        }<br />
        return instance;<br />
    }<br />
    
  • LeChatNoirLeChatNoir Membre, Modérateur
    ben oui... Mais on ne voit pas ou est initialisée str...
  • Tu devrais utiliser dispatch_once() pour info.
  • lincoln33lincoln33 Full-Time n00b Membre
    janvier 2013 modifié #6
    j'ai réussi une chose, lorsque je click sur ma categorie, j'enregistre dans ma dataclass l'id de la catégorie.



    lorsque je click sur la categ ca affiche ma str à  (null).



    Par contre si je baisse la vue pour refresh et une fois refresh, ca affiche bien l'info et str = ID

    je comprend pas pourquoi ca ne le fait pas direct ?



    Voici le code complet de la page.



    merci à  vous
    <br />
    <br />
    #import &quot;UIImageView+AFNetworking.h&quot;<br />
    #import &quot;ListeSiteCategorie.h&quot;<br />
    #import &quot;CellSiteCategorie.h&quot;<br />
    #import &quot;ODRefreshControl.h&quot;<br />
    #import &quot;DataClass.h&quot;<br />
    <br />
    @interface ListeSiteCategorie ()<br />
    @end<br />
    @implementation ListeSiteCategorie<br />
    @synthesize activityIndicatorView;<br />
    <br />
    - (id)initWithStyle:(UITableViewStyle)style<br />
    {<br />
    	self = [super initWithStyle:style];<br />
    	if (self) {<br />
    		// Custom initialization<br />
    	}<br />
    	return self;<br />
    }<br />
    <br />
    - (void)viewDidLoad<br />
    {<br />
    	[super viewDidLoad];<br />
      <br />
      <br />
    	self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];<br />
    	self.activityIndicatorView.hidesWhenStopped = YES;<br />
    	self.activityIndicatorView.center = self.view.center;<br />
    	[self.tableView addSubview:self.activityIndicatorView];<br />
    	[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];<br />
      <br />
    	[self.activityIndicatorView startAnimating];<br />
      <br />
    	[self	parsingJson];<br />
      <br />
    	ODRefreshControl *refreshControl = [[ODRefreshControl alloc] initInScrollView:self.tableView];<br />
    	[refreshControl addTarget:self action:@selector(dropViewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged];<br />
      <br />
    	[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];<br />
    }<br />
    <br />
    - (void)didReceiveMemoryWarning<br />
    {<br />
    	[super didReceiveMemoryWarning];<br />
    	// Dispose of any resources that can be recreated.<br />
    }<br />
    #pragma mark<br />
    #pragma mark NSURLConnectionDelegete<br />
    #pragma mark - Table view data source<br />
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView<br />
    {<br />
      <br />
    	// Return the number of sections.<br />
    	return 1;<br />
    }<br />
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section<br />
    {<br />
      <br />
    	// Return the number of rows in the section.<br />
    	return [listOfItems count];<br />
    }<br />
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath<br />
    {<br />
      <br />
    	static NSString *cellIdentifier = @&quot;CellSiteCategorie&quot;;<br />
    	CellSiteCategorie *cell = (CellSiteCategorie *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];  //Tu caste pour etre sur que ça ne plante pas puisque la fonction dequeueReusable... renvoie une UITableViewCell<br />
    	if (&#33;cell) {<br />
    		cell = [[CellSiteCategorie alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];<br />
    	}<br />
      <br />
      <br />
    	// Cell background image.<br />
    	cell.backgroundView = [[[UIImageView alloc] init] init];<br />
    	UIImage *rowBackground;<br />
    	rowBackground = [UIImage imageNamed:@&quot;backgroundCell.png&quot;];<br />
    	((UIImageView *)cell.backgroundView).image = rowBackground;<br />
      <br />
    	[cell.labelDomaineSite setText: [[listOfItems objectAtIndex:indexPath.row] objectForKey:@&quot;domaine&quot;]];<br />
    	  <br />
    	return cell;<br />
    }<br />
    /*<br />
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {<br />
    	if ([segue.identifier isEqualToString:@&quot;DetailSite&quot;]) {<br />
    		NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];<br />
    		NSDictionary *dicArticleSelection = listOfItems [[indexPath  row]];<br />
    		DetailSite *ViewDetailController = segue.destinationViewController;<br />
    		ViewDetailController.dicArticle = dicArticleSelection;<br />
    	}<br />
    }<br />
    */<br />
    -(void)parsingJson{<br />
      <br />
    	DataClass *obj=[DataClass getInstance];<br />
    	NSString *pourLeLog = obj.str;<br />
    	pourLeLog = obj.str;<br />
    	NSLog(@&quot;http://www.MONSITE.COM/sites.php?lacat=%@&quot;,pourLeLog);<br />
      <br />
    	NSString *urlDuSite = @&quot;http://www.MONSITE.COM/sites.php?lacat=&quot;;<br />
    	NSString *fullURL = [NSString stringWithFormat:@&quot;%@%@&quot;,urlDuSite,pourLeLog];<br />
      <br />
      <br />
      <br />
    	NSURL *url = [NSURL URLWithString:fullURL];<br />
      <br />
    	NSURLRequest *request = [NSURLRequest requestWithURL:url];<br />
      <br />
    	AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {<br />
    	  <br />
    		listOfItems =JSON;<br />
    		// NSLog(@&quot;url=%@&quot;,JSON);<br />
    		[self.activityIndicatorView stopAnimating];<br />
    		[self.tableView reloadData];<br />
    	} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {<br />
    		NSLog(@&quot;Request Failed with Error: %@, %@&quot;, error, error.userInfo);<br />
    	}];<br />
      <br />
    	[operation start];<br />
    	[self.tableView reloadData];<br />
      <br />
    }<br />
    - (void)dropViewDidBeginRefreshing:(ODRefreshControl *)refreshControl<br />
    {<br />
    	double delayInSeconds = 3.0;<br />
    	dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);<br />
    	dispatch_after(popTime, dispatch_get_main_queue(), ^(void){<br />
    		[self parsingJson];<br />
    	  <br />
    		[refreshControl endRefreshing];<br />
    	});<br />
      <br />
    }<br />
    @end<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.