0

次のコードがあります。

-(NSDictionary *)getPlayers
{

    NSManagedObjectContext *context = self.genkDatabase.managedObjectContext;

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Team"
                                              inManagedObjectContext:context];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"position ==[c] %@", @"Doelman"];
    [fetchRequest setEntity:entity];

    NSError *error;
    NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
    if (fetchedObjects == nil) {
        // Handle the error.
    }else

        for (Team *info in fetchedObjects) {

            [_photos setObject:info.image  forKey:@"player_imgUrl"];
            [_photos setObject:info.name forKey:@"player_name"];


        }
    NSLog(@"%@",_photos);
    return _photos;

しかし、何らかの理由で、私のNSLogは常に(null)を返します。しかし、私がこれを行うとき

[_photos setObject:info.image  forKey:@"player_imgUrl"];
            [_photos setObject:info.name forKey:@"player_name"];

            NSLog(@"name: %@",info.name );
            NSLog(@"url: %@",info.image );

適切なデータが返されます。

誰かが助けることができますか?

敬具。

4

2 に答える 2

1

問題に直接関係していない可能性のある間違いがあります。forループでは、常に同じキーの名前と画像をリセットします。したがって、ループの最後に、辞書には1つの名前と1つの画像が必要であり、配列のすべての画像が含まれている必要はありません。あなたはそれを変えるべきです

更新:おそらくこのようなもの:

int count = fetchedObjects.count;

for (int i = 0; i < count; i++)
{
   NSString *image_key = [NSString stringWithFormat:@"player_imgUrl%d",i];
   NSString *name_key =  [NSString stringWithFormat:@"player_name%d",i];

  [_photos setObject:[[fetchedObjects objectAtIndex:i] image]  forKey:image_key];
  [_photos setObject:[[fetchedObjects objectAtIndex:i] name] forKey:name_key];
}
于 2012-10-04T10:35:01.460 に答える
1

次のコード行を使用して、_photosディクショナリをどこかにインスタンス化したことを確認してください。

_photos = [[NSMutableDictionary alloc] init];

インスタンス変数またはプロパティとして定義するだけでは不十分です。

于 2012-10-04T10:38:13.300 に答える