【问题标题】:How to Add UIImage to NSMutableArray如何将 UIImage 添加到 NSMutableArray
【发布时间】:2013-02-14 03:08:23
【问题描述】:

我正在尝试使用此代码将我的 UIImage 从 Web 服务添加到我的 NSMutableArray:

for (int i=0; i<[totalRowCountString intValue]; i++)
{    
    NSString *criticsRatingString = [[JSON valueForKeyPath:@"movies.ratings.critics_rating"] componentsJoinedByString:@" "];
    NSLog(@"criticsRatingString: %@", criticsRatingString);

    if ([criticsRatingString isEqualToString:@"Certified Fresh"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_certified_fresh.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Fresh"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_fresh.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Rotten"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_rotten.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Spilled"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_spilled.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Upright"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_upright.png"];
    }

    [tomatorRatingImages addObject:self.ratingImage];
    NSLog(@"tomatoRatingImages: %@", tomatorRatingImages);
}

但是我的tomatoRatingImages 的NSLog 返回NULL。任何想法为什么它返回 NULL?

更新:我的 NSMutableArray 已经在我的 viewWillAppear 方法中初始化。

【问题讨论】:

    标签: objective-c xcode uiimage nsmutablearray


    【解决方案1】:

    您必须在向其添加对象之前初始化该数组。

    NSMutableArray *tomatorRatingImages = [[NSMutableArray alloc] init];
    

    【讨论】:

    • 没关系。我找到了答案。在我的 viewWillAppear 中某处只有一个拼写错误,我没有正确初始化它。感谢 endy 指出。
    【解决方案2】:
    NSMutableArray * tomatorRatingImages =[[NSMutableArray alloc]init];
    
    [tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled.png"]];
    
    [tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled1.png"]];
    
    [tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled2.png"]];
    

    你可以在 NSMutableArray 中输入多个图像。

    【讨论】:

      【解决方案3】:

      如果你有一个 NSMutableArray 实例的属性,最好写 getter 来初始化它。它只负责初始化变量,并且仅在需要时才加载。

         -(NSMutableArray *) tomatorRatingImages {
               if(_tomatorRatingImages == nil) {
                     _tomatorRatingImages = [NSMutableArray alloc] init];
               }
               return _tomatorRatingImages;
          }
      

      【讨论】:

        【解决方案4】:

        这样初始化

        NSMutableArray * tomatorRatingImages =[[NSMutableArray alloc]initWithCapacity:3];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-29
          • 1970-01-01
          • 2013-05-09
          • 2011-12-13
          • 2012-10-01
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多