0

新しいアプリケーションで解析フレームワークを使用しており、そのテーブルの 1 つからデータをフェッチしようとしています。解析テーブルには 20 列が含まれており、そのうちの 15 列近くが文字列型です。以下はフェッチするためのコードです

PFQuery *query=[PFQuery queryWithClassName:@"Product"];
[query setLimit:20];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {

    for (PFObject *obj in objects) {
        NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
        [dict setValue:obj[@"GTIN_CD"] forKey:@"GTIN_CD"];
        [dict setValue:obj[@"GTIN_NM"] forKey:@"GTIN_NM"];

        [self.arrProducts addObject:dict];  
    }

    [self.tblSearchResult setDelegate:self];
    [self.tblSearchResult setDataSource:self];
    [self.tblSearchResult reloadData];
}
else{
    NSLog(@"Error : %@",error);
}
}];

この 2 つのオブジェクト GTIN_CD、GTIN_NM をフェッチしようとすると、値が返されません。また、オブジェクトには 5 列の値のみが含まれます。

どんな助けでも大歓迎です。前もって感謝します

4

1 に答える 1

0

フェッチしたオブジェクトで何もしていません。辞書から値を取得して設定しています。これを試して:

PFQuery *query=[PFQuery queryWithClassName:@"Product"];
[query setLimit:20];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        NSMutableDictionary *dict=[[NSMutableDictionary alloc]init]; // Initialize outside of loop
        for (PFObject *obj in objects) {
            [dict setValue:obj[@"GTIN_CD"] forKey:@"GTIN_CD"]; // obj[@"key"] instead of dict[@"key"]
            [dict setValue:obj[@"GTIN_NM"] forKey:@"GTIN_NM"];
        }

        [self.tblSearchResult setDelegate:self];
        [self.tblSearchResult setDataSource:self];
        [self.tblSearchResult reloadData];

   }
    else{
        NSLog(@"Error : %@",error);
    }
}];

アップデート

if(!error) 内でこれを試してください:

for (PFObject *obj in objects) {
    for (NSString *key in [obj allKeys]) {
        if([obj[key] isKindOfClass:[NSString class]]) {
            NSLog(@"Key: %@ - Value: %@", key, obj[key]);
        }
    }
}

これにより、すべての列とそれらの値が記録されます。このコードを自分でテストしていないため、タイプミスなどがある可能性があることに注意してください。

于 2014-04-30T07:14:21.577 に答える