我在尝试设置将由另一个类设置的属性时遇到问题,这里有两个属性将用于填充表:
@interface TableViewController : UITableViewController
@property (nonatomic, retain) NSArray *friendsNames;
@property (nonatomic, retain) NSArray *friendsIDs;
@end
在这个类中(继承自NSObject
)我使用这个方法设置它们:
@implementation MyFacebooDelegate
-(void)getFriends:(NSArray *)names {
NSMutableArray *friendsNames = [[NSMutableArray alloc] init];
NSMutableArray *friendsIDs = [[NSMutableArray alloc] init];
for (int i=0; i<[names count]; i++) {
NSDictionary *friend = [names objectAtIndex:i];
NSString *name = [friend objectForKey:@"name"];
[friendsIDs addObject:[friend objectForKey:@"id"]];
[friendsNames addObject:name];
}
if(tableController == nil)
tableController = [[TableViewController alloc] init];
[tableController setFriendsIDs:friendsIDs];
[tableController setFriendsNames:friendsNames];
NSLog(@"%@", [tableController friendsNames]);
[friendsNames release];
[friendsIDs release];
}
所有名称都在控制台(NSLog(@"%@", [tableController friendsNames])
)上打印,但不在TableViewController类中打印。
如果我尝试在TableViewController类的viewDidLoad
中打印两个数组的内容,那么它将为null,也会在表格出现在屏幕上之前设置数组。
答案 0 :(得分:2)
你做错了......你应该将MyFaceboo
delegate
设置为UITableViewController
的{{1}}数据源并实施tableView
答案 1 :(得分:1)
假设您使用friendNames
&amp;的价值来自friendIds
的{{1}} {会实现UITableViewController
..我在你的片段中没有看到它,所以提到它)
您可以重新编写属性(假设您使用的是ARC):
UITableViewDataSource
并使用以下语法:
@property (nonatomic, strong) NSArray *friendsNames;
@property (nonatomic, strong) NSArray *friendsIDs;
并确保您确实显示了您在此处创建的tableController.friendNames = friendNames;
tableController.friendIDs = frinedIDs
而不显示其他内容(从您的代码段中不清楚您是如何展示/推动此tableController
所以提及它)< / p>