地元のサッカー クラブ用のアプリを作成しています。すべてのプレイヤーの名前と写真をグリッドに表示したいと考えています。したがって、NRGridview を使用しています。しかし、それは私のデータをロードしません。すべてのプレイヤー情報を含む NSArray があります。ここに、この配列を生成するメソッドが表示されます。
- (NSArray *)getTeam
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Team"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortOrder" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *mutableFetchResults = [self.genkDatabase.managedObjectContext executeFetchRequest:request error:&error];
NSLog(@"first error log %@", [error localizedDescription]);
if (mutableFetchResults == nil) {
NSLog(@"second error log %@", [error localizedDescription]);
}else if ([mutableFetchResults count] == 0){
NSLog(@"geen resultaten voor team");
}else{
NSLog(@"team names: %@",[mutableFetchResults valueForKey:@"name"]);
return mutableFetchResults;
}
return mutableFetchResults;
}
そして、これは私がテーブルビューで行うことです。
- (NRGridViewCell*)gridView:(NRGridView *)gridView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyCellIdentifier = @"MyCellIdentifier";
NRGridViewCell* cell = [gridView dequeueReusableCellWithIdentifier:MyCellIdentifier];
if(cell == nil){
cell = [[NRGridViewCell alloc] initWithReuseIdentifier:MyCellIdentifier];
[[cell textLabel] setFont:[UIFont boldSystemFontOfSize:11.]];
[[cell detailedTextLabel] setFont:[UIFont systemFontOfSize:11.]];
}
NSLog(@"players array %@",players);
for (int i = 0; i <= [players count]; i++) {
// NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[[players objectAtIndex:i]valueForKey:@"image"]]];
// UIImage *image = [[UIImage alloc]initWithData:imgData];
//cell.imageView.image = image;
cell.textLabel.text = [[players objectAtIndex:i]valueForKey:@"name"];
cell.detailedTextLabel.text = [[players objectAtIndex:i]valueForKey:@"position"];
return cell;
}
return cell;
}
NSLog は常に (null) を返します。私の質問は、NSArray *players = [self getTeam]
私のテーブルビューがデータでいっぱいになるように、コード " . をどこに置くべきですか?
編集
適切な量のセクションと numberOfRowsInsection が返されました。numbersOfRowsIn セクションでは、4 つのメソッドを作成しました。1 つはゴールキーパー、1 つはディフェンダー、1 つはウィンガー、1 つはアタッカーを完全に制する方法です。次に、テーブルビューメソッドで次のことを行いました。
- (NSInteger)gridView:(NRGridView *)gridView numberOfItemsInSection:(NSInteger)section
{
if(section == 0){
return [[self getDoelmannen]count];
}else if (section == 1){
return [[self getVerdedigers]count];
}else if (section == 2){
return [[self getMiddenvelders]count];
}else{
return [[self getAanvallers]count];
}
return [[self getAanvallers]count];
}
これは機能します。しかし、私のセルセルフにはまだ問題があります。
EDIT2 さて、私の問題は、プレーヤーの配列をいっぱいにすることだと思います。viewDidLoad で次のことを行います
-(void)viewDidLoad{
_players = [self getTeam];
NSLog(@"players array: %@",_players);
}
次のログが表示されます。
2012-10-17 12:11:22.099 RacingGenk[63122:c07] nil
2012-10-17 12:11:22.099 RacingGenk[63122:c07] players array: (null)
これがgetTeamの私のコードです
- (NSArray *)getTeam
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Team"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortOrder" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *mutableFetchResults = [self.genkDatabase.managedObjectContext executeFetchRequest:request error:&error];
if (mutableFetchResults == nil) {
NSLog(@"nil");
}else if ([mutableFetchResults count] == 0){
NSLog(@"geen resultaten voor team");
}else{
NSLog(@"team names: %@",[mutableFetchResults valueForKey:@"name"]);
return mutableFetchResults;
}
return mutableFetchResults;
}