views:

184

answers:

2

Hi all,

Three days ago this code worked...:(

The label will not update to show the loaded facebook username.

//Interface .h
IBOutlet UILabel *namefb;  
...
@property(nonatomic, retain)UILabel *namefb;


//Implementation .m

- (void)request:(FBRequest*)request didLoad:(id)result {

        NSArray* users = result;

    NSDictionary* user = [users objectAtIndex:0];

    NSString* name = [user objectForKey:@"name"];

       namefb.text=[NSString stringWithFormat:@"Log-in: %@", name];//not update
}

(I have also connected the label in IB and imported all fbconnect delegates )

When I run it in debug, the variable name is right, but namefb.text does not get updated..

Any ideas?

sorry for my english..:)

+1  A: 

Your code assumes three things:

  1. The result object is of type NSArray.

  2. The NSArray has at least one object, which is an NSDictionary.

  3. That object has a key "name" that has an NSString object associated with it.

Test each of these three things, perhaps by using some NSLog() statements, and you should see where the problem is.

Jeff Kelley
A: 

Make sure you connected namefb to a UILabel object in Interface Builder. Simply making that variable an outlet won't cause an object to appear there out of thin air—you need to create the object (in IB) and plug it into the outlet (in IB).

Until it's connected to an object, the variable will hold nil, and a message to nil does nothing.

Peter Hosey