Ios 在Objective-C中的for循环中创建textview

Ios 在Objective-C中的for循环中创建textview,ios,objective-c,json,uitextview,Ios,Objective C,Json,Uitextview,我正在从mysql数据库检索数据,并希望将其显示在文本视图中。因此,我为每个数据段创建了一个for循环。问题是它只创建一个textview,因此只显示检索到的第一条数据。我的代码如下: -(void) getData:(NSData *) data { NSError *error; json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; } -(voi

我正在从mysql数据库检索数据,并希望将其显示在文本视图中。因此,我为每个数据段创建了一个for循环。问题是它只创建一个textview,因此只显示检索到的第一条数据。我的代码如下:

-(void) getData:(NSData *) data {
    NSError *error;
    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
}

-(void) start {
    //NSLog(@"%lu", (unsigned long)[json count]);
    NSURL *url = [NSURL URLWithString:kGETUrl];
    NSData *data = [NSData dataWithContentsOfURL:url];
    [self getData:data];

    NSIndexPath *indexPath;
    NSDictionary *info = [json objectAtIndex:indexPath.row];

    for (int i = 0; i < [json count]; i++)
    {
        //NSLog(@"%@", json);

        UITextView *myTextView = [[UITextView alloc] init];
        myTextView.text = [info objectForKey:@"title"];
        [self.view addSubview:myTextView];
        [myTextView sizeToFit];
    }
}
-(void)getData:(NSData*)数据{
n错误*错误;
json=[NSJSONSerialization JSONObjectWithData:数据选项:针织错误:&错误];
}
-(无效)开始{
//NSLog(@“%lu”,无符号长)[json计数];
NSURL*url=[NSURL URLWithString:kGETUrl];
NSData*data=[NSData dataWithContentsOfURL:url];
[自获取数据:数据];
nsindepath*indepath;
NSDictionary*info=[json objectAtIndex:indexath.row];
对于(int i=0;i<[json计数];i++)
{
//NSLog(@“%@”,json);
UITextView*myTextView=[[UITextView alloc]init];
myTextView.text=[info objectForKey:@“title”];
[self.view addSubview:myTextView];
[myTextView sizeToFit];
}
}

json是一个数组,info是json中的一个字典

您在json上循环了五次,但打印的是相同的信息。你需要:

int yPos = 0;
for (int i = 0; i < [json count]; i++)
{
    //NSLog(@"%@", json);
    info = [json objectAtIndex:i];
    UITextView *myTextView = [[UITextView alloc] init];
    myTextView.text = [info objectForKey:@"title"];
    [self.view addSubview:myTextView];
    [myTextView sizeToFit];
    yPos += myTextView.frame.size.height;
    myTextView.frame = CGRectMake(0, yPos, myTextView.frame.size.width, myTextView.frame.size.height);

}
intypos=0;
对于(int i=0;i<[json计数];i++)
{
//NSLog(@“%@”,json);
info=[json objectAtIndex:i];
UITextView*myTextView=[[UITextView alloc]init];
myTextView.text=[info objectForKey:@“title”];
[self.view addSubview:myTextView];
[myTextView sizeToFit];
yPos+=myTextView.frame.size.height;
myTextView.frame=CGRectMake(0,yPos,myTextView.frame.size.width,myTextView.frame.size.height);
}

似乎
json
中只有一个对象。它有5个对象,因为当我做一个NSLog时,它会打印5个对象,当我做一个json的NSLog时,它也会打印5个对象将每个文本视图放在不同的框架中。目前,您使用相同的框架创建它们,因此只能看到最后一个。UITableview可能是更好的主意。好吧,当我打印Json计数时,它返回0。这没有意义,因为当我执行以下操作时:NSLog(@“%@”,json);它返回5种不同的内容。那么,如何为每个文本视图创建一个框架呢?目前,它将所有数据打印在每个文本视图的顶部,并更新了我的答案。我认为[myTextView sizeToFit]应该为您的textview创建合适的大小和高度,但我不太确定,因为textview是可滚动的。如果用户不能对其进行编辑,则最好使用UILabel,但如果文本应显示两个[info objectForKey:@”“]内容,则如何添加第二个。我可以添加一个逗号并添加它吗?按照您想要的方式连接字符串。也就是说,创建一个NSString*text=[[info-objectForKey:@“title”]stringByAppendingString:[info-objectForKey:@“body”];并将textview文本设置为该值。有很多方法可以连接字符串,因此如果您想要更高级的内容,请查看NSString