Ios6 while循环不工作的条件,无法填充tableview单元格

Ios6 while循环不工作的条件,无法填充tableview单元格,ios6,while-loop,uitableview,Ios6,While Loop,Uitableview,我是ios的初学者,正在构建我的第一个应用程序……所以请对我放松:-) 我试图在tableview单元格中显示web服务的结果。但是,我的while循环条件失败。我将nslog移动到while循环中,它会像您预期的那样清晰地打印阵列中的对象。然而,我相信当它结束的时候,一定有什么不对劲 有人知道它为什么会失败吗 基本上,我正在尝试获取“配方名称”和“SmallImageURL”;从web服务结果,并在tableview单元格中打印该结果 我知道我的tableview单元格无法正常打印。我一会儿再

我是ios的初学者,正在构建我的第一个应用程序……所以请对我放松:-)

我试图在tableview单元格中显示web服务的结果。但是,我的while循环条件失败。我将nslog移动到while循环中,它会像您预期的那样清晰地打印阵列中的对象。然而,我相信当它结束的时候,一定有什么不对劲

有人知道它为什么会失败吗

基本上,我正在尝试获取“配方名称”和“SmallImageURL”;从web服务结果,并在tableview单元格中打印该结果

我知道我的tableview单元格无法正常打印。我一会儿再谈。可能将URL提取到一个数组中,然后使用该数组在tableviewcell方法中创建URL

非常感谢任何人能提供的任何帮助。我只是觉得很奇怪,因为它显然是通过while循环的,没有任何问题-

没有真正的错误消息,只是:

自搜索YummlyViewController*0x12b39570 匹配计数int 40

在底部窗格的左侧部分

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    self.searchYummlyRecipeResults = [NSJSONSerialization JSONObjectWithData:self.yummlyRecipesNSData options:nil error:nil];
    self.tempYummlyResultsMatches = [[NSMutableArray alloc]init];  
    int matchesCount = 0;
    while([self.searchYummlyRecipeResults[@"matches"]objectAtIndex:matchesCount]){
        [self.tempYummlyRecipeMatch addObject:[[self.searchYummlyRecipeResults[@"matches"]objectAtIndex:matchesCount]objectForKey:@"recipeName"]];
        [self.tempYummlyRecipeMatch addObject:[[self.searchYummlyRecipeResults[@"matches"]objectAtIndex:matchesCount]objectForKey:@"smallImageUrls"]];   
        NSLog(@"tempYummlyRecipeMatch array's contents: %@", self.tempYummlyRecipeMatch);
        matchesCount++;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...

    NSString *recipeString = self.tempYummlyRecipeMatch[indexPath.row];
    cell.textLabel.text = recipeString;

    //The below is code on how to add a image from a web service to a cell. I dont think that will work but my code cant make it down there yet so I'll tackle that after while loop issue.
    NSURL *url = [NSURL URLWithString:self.tempYummlyRecipeMatch[indexPath.row+1];
    UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

    cell.imageView.image = image;

    return cell;
}
下面是webservice输出的示例:

Recipe List: {
    attribution =     {
        html = "<a href='http://www.yummly.com/recipes/onion-soup'>onion soup recipes</a> search powered by <img src='http://static.yummly.com/api-logo.png'/>";
        logo = "http://static.yummly.com/api-logo.png";
        text = "onion soup recipes: search powered by Yummly";
        url = "http://www.yummly.com/recipes/onion-soup";
    };
    criteria =     {
        allowedIngredients =         (
        );
        excludedIngredients =         (
        );
        facetFields =         (
        );
        maxResults = 6;
        requirePictures = 0;
        resultsToSkip = 0;
        terms =         (
            onion,
            soup
        );
    };
    facetCounts =     {
    };
    matches =     (
                {
            attributes =             {
            };
            flavors =             {
                bitter = "0.1666666666666667";
                meaty = "0.3333333333333333";
                piquant = 0;
                salty = "0.5";
                sour = "0.3333333333333333";
                sweet = "0.5";
            };
            id = "French-onion-soup-sandwiches-309090";
            ingredients =             (
                "olive oil",
                "sea salt",
                "fresh thyme leaves",
                "granulated sugar",
                "yellow onions",
                "unsalted butter",
                "beef broth",
                "cracked black pepper",
                "gruyere cheese",
                bread
            );
            rating = 0;
            recipeName = "French Onion Soup Sandwiches";
            smallImageUrls =             (
                "http://i.yummly.com/French-onion-soup-sandwiches-309090-273265.s.jpg"
            );
            sourceDisplayName = "Joy the Baker";
            totalTimeInSeconds = 0;
        },
                {
            attributes =             {
                course =                 (
                    "Main Dishes"
                );
            };
            flavors =             {
                bitter = 1;
                meaty = "0.1666666666666667";
                piquant = 0;
                salty = 1;
                sour = "0.1666666666666667";
                sweet = "0.3333333333333333";
            };
            id = "Awesome-Slow-Cooker-Pot-Roast-Allrecipes";
            ingredients =             (
                "condensed cream of mushroom soup",
                "onion soup mix",
                "pot roast",
                water
            );
            rating = "4.69";
            recipeName = "Awesome Slow Cooker Pot Roast";
            smallImageUrls =             (
                "http://i2.yummly.com/Awesome-Slow-Cooker-Pot-Roast-Allrecipes-2.s.png",
                "http://i.yummly.com/Awesome-Slow-Cooker-Pot-Roast-Allrecipes-58919.s.png"
            );
            sourceDisplayName = AllRecipes;
            totalTimeInSeconds = 29400;
        },
                {
            attributes =             {
                course =                 (
                    Soups,
                    Appetizers
                );
                cuisine =                 (
                    French
                );
                holiday =                 (
                    Thanksgiving
                );
            };
            flavors =             {
                bitter = "0.1666666666666667";
                meaty = "0.1666666666666667";
                piquant = 0;
                salty = "0.1666666666666667";
                sour = "0.1666666666666667";
                sweet = "0.1666666666666667";
            };
            id = "French-Onion-Soup-The-Pioneer-Woman-Cooks-_-Ree-Drummond-41364";
            ingredients =             (
                "stick butter",
                "french bread",
                "yellow onion",
                "low sodium chicken broth",
                "gruyere cheese",
                "minced garlic",
                "dry white wine",
                "worcestershire sauce",
                "beef broth"
            );
            rating = 0;
            recipeName = "French Onion Soup";
            smallImageUrls =             (
                "http://i.yummly.com/French-Onion-Soup-The-Pioneer-Woman-Cooks-_-Ree-Drummond-41364-1512.s.jpg",
                "http://i.yummly.com/French-Onion-Soup-The-Pioneer-Woman-Cooks-_-Ree-Drummond-41364-1199.s.jpg",
                "http://i.yummly.com/French-Onion-Soup-The-Pioneer-Woman-Cooks-_-Ree-Drummond-41364-220.s.jpg"
            );
            sourceDisplayName = "The Pioneer Woman";
            totalTimeInSeconds = 0;
        },
                {
            attributes =             {
                course =                 (
                    Soups
                );
            };
            flavors = "<null>";
            id = "Curried-sweet-potato-soup-333086";
            ingredients =             (
                broth,
                salt,
                "sweet potatoes",
                "lite coconut milk",
                onion,
                "coconut oil",
                "curry powder",
                garlic,
                spinach,
                lime,
                "chopped cilantro",
                "red pepper flakes",
                "brown sugar",
                peas
            );
            rating = 0;
            recipeName = "Curried Sweet Potato Soup";
            smallImageUrls =             (
                "http://i.yummly.com/Curried-sweet-potato-soup-333086-295006.s.jpg"
            );
            sourceDisplayName = "Camille Styles";
            totalTimeInSeconds = 0;
        },
                {
            attributes =             {
            };
            flavors = "<null>";
            id = "French-onion-soup-grilled-cheese-308496";
            ingredients =             (
                "unsalted butter",
                "kosher salt",
                "sweet onions",
                "unsalted beef stock",
                pepper,
                "gruyere cheese",
                "dry sherry",
                "italian bread",
                "fresh thyme"
            );
            rating = 0;
            recipeName = "French Onion Soup Grilled Cheese";
            smallImageUrls =             (
                "http://i.yummly.com/French-onion-soup-grilled-cheese-308496-272505.s.jpg"
            );
            sourceDisplayName = "The Kitchn";
            totalTimeInSeconds = 0;
        },
                {
            attributes =             {
            };
            flavors =             {
                bitter = 1;
                meaty = 1;
                piquant = 0;
                salty = 1;
                sour = 1;
                sweet = "0.8333333333333334";
            };
            id = "Vidalia-onion-soup-with-wild-rice-and-blue-cheese-305366";
            ingredients =             (
                "vidalia onions",
                "chicken stock",
                herb,
                pepper,
                "wild rice",
                "unsalted butter",
                baguette,
                salt,
                "extra virgin olive oil",
                other
            );
            rating = 0;
            recipeName = "Vidalia Onion Soup with Wild Rice and Blue Cheese";
            smallImageUrls =             (
                "http://i.yummly.com/Vidalia-onion-soup-with-wild-rice-and-blue-cheese-305366-268824.s.jpg"
            );
            sourceDisplayName = "Smitten Kitchen";
            totalTimeInSeconds = 0;
        },

连接IDFinishLoading
结束时,应该重新加载表视图

[self.tableView reloadData];
仅仅更新数组并不会立即更新表视图

[self.tableView reloadData];

编辑:您是对的,您的
while
循环条件不正确。目前,它只检查索引
matchescont
处的对象是否不是
nil
(有点类似于
while(object)
while(object!=nil)
)。我认为您要寻找的是数组中的对象数是否大于
matchescont
,以防止数组索引越界异常。为此,您需要使用
while([self.searchYummlyRecipeResults[@“matches”]count]>matchesCount)

您好,谢谢您的回复。然而,我觉得“while循环”中的实际语句有问题。我将循环更改为while(matchescont<10)。我现在可以成功地通过while循环。配方名称显示在tableview单元格中。所以我猜while循环中的实际表达式有问题。我忽略了它,但我正在重新加载tableview。那很好。我忽略了这个,我只是编辑了我的答案。如果这能解决你的问题,你能试试吗?