0

配列から値を取得しようとすると問題が発生します。IUTableViewに表示するために、この配列からすべての値を取得したいと思います。

関数にdoubleを使用する必要がありますか?

{
1 =     {
    dishId = 1;
    dishName = "Tomato Salades";
    dishPrice = 13;
    dishTypeId = 1;
    dishTypeName = Starter;
};
2 =     {
    dishId = 2;
    dishName = "Leeks Salades";
    dishPrice = 12;
    dishTypeId = 1;
    dishTypeName = Starter;
};
3 =     {
    dishId = 3;
    dishName = Fries;
    dishPrice = 14;
    dishTypeId = 2;
    dishTypeName = "Main Course";
};
4 =     {
    dishId = 4;
    dishName = Beef;
    dishPrice = 15;
    dishTypeId = 2;
    dishTypeName = "Main Course";
};
7 =     {
    dishId = 7;
    dishName = "Cheese Cake";
    dishPrice = 8;
    dishTypeId = 3;
    dishTypeName = Dessert;
};
menuCountry = France;
menuDescription = "un menu pas comme les autres pour une region pas comme les autres";
menuId = 1;
menuName = "Autour de l\\Alsace";
menuState = 1;
}

これは、配列に辞書を作成する私のPythonコードです。

def getDishOfTheWeek():
menuArray = []
menuDic = Ddict(dict)
    for menu in Menus.select().where(state=True):

        menuDic['menuId']=menu.id
        menuDic['menuName']=menu.name
        menuDic['menuCountry']=menu.country.name
        menuDic['menuDescription']=menu.description
        menuDic['menuState']=menu.state
        for d in  DishMenuRels.select().where(menu = menu.id).join(Dishes).join(DishTypes).order_by((DishTypes,'name')):
            menuDic[str(d.dish.id)] = {}
            menuDic[str(d.dish.id)]['dishTypeName'] = d.dish.dishType.name
            menuDic[str(d.dish.id)]['dishTypeId'] = d.dish.dishType.id
            menuDic[str(d.dish.id)]['dishId'] = d.dish.id
            menuDic[str(d.dish.id)]['dishName'] = d.dish.name
            menuDic[str(d.dish.id)]['dishPrice'] = d.dish.price
menuArray.append(menuDic)
return json.dumps(menuArray)

これは、DataJsonを取得して配列に配置するための私のObjectiv-Cコードです。

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {

switch (streamEvent) {

    case NSStreamEventOpenCompleted:
        [[ConnectionSingleton getInstance] setConnectionMade:YES];
        NSLog(@"Stream opened");
        break;

    case NSStreamEventHasBytesAvailable:
        if (theStream == inputStream) {

            uint8_t buffer[1024];
            int len;

            while ([inputStream hasBytesAvailable]) {

                len = [inputStream read:buffer maxLength:sizeof(buffer)];

                if (len > 0) {

                    NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];

                    output = [output substringToIndex:[output length] - 2];

                    if (nil != output) {
                        NSError* error;     // Obligatoir pour le JSON

                        menu = [NSJSONSerialization JSONObjectWithData:[output dataUsingEncoding:NSUTF8StringEncoding] options:
                                  NSJSONReadingMutableContainers error:&error];   // Put Json in the Array


                        [[self tableView] reloadData];  // Reload Array to populate it
                    }
                }
            }
        }
        break;      

    case NSStreamEventErrorOccurred:
        NSLog(@"Can not connect to the host!");
        break;

    case NSStreamEventEndEncountered:
        break;

    default:
        NSLog(@"Unknown event");
}

}
4

1 に答える 1

1

これでうまくいくと思います

NSArray *firstArray = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil], [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil],[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil],[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil],[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",nil],@"String",@"String",@"String",@"String",@"String",nil];

NSInteger count_i = firstArray.count;
NSInteger count_j;
id val;
for (NSInteger i = 0; i < count_i; i++) {
    if ([[firstArray objectAtIndex:i] isKindOfClass:[NSArray class]]) {
        count_j = [[firstArray objectAtIndex:i] count];
        for (NSUInteger j = 0; j < count_j; j++) {
            val = [[firstArray objectAtIndex:i] objectAtIndex:j]; 
            NSLog(@"%@",val);
        }
    }else{
        val = [firstArray objectAtIndex:i];
        NSLog(@"%@",val);
    }
}

ただし、値はさまざまなタイプであるため、jの値に応じてさまざまな方法で処理する必要があります。

于 2012-05-08T19:04:33.927 に答える