不兼容的指针类型分配给' NSString *'来自' NSMutableArray *'

时间:2015-02-04 13:02:58

标签: ios objective-c pointers nsmutablearray xcode6

我目前正在参加iOS开发课程,我在课程中遇到的这一行代码会生成此警告:分配给' NSString *'的不兼容的指针类型来自' NSMutableArray *'。

media.comments = randomComments;

数组是在这一行中创建的:

NSMutableArray *randomComments = [NSMutableArray array];

我尝试将mutableCopy添加到randomComments数组的末尾以使警告静音,正如本网站其他地方所建议的那样,但警告仍然存在:

// Doesn't silence warning    
NSMutableArray *randomComments = [[NSMutableArray array]mutableCopy];

有没有人有另一个建议如何平息我遇到的不兼容指针类型警告?

这是完整的方法:

- (void) addRandomData {
    NSMutableArray *randomMediaItems = [NSMutableArray array];

    for (int i = 1; i <= 10; i++) {
        NSString *imageName = [NSString stringWithFormat:@"%d.jpg", i];
        UIImage *image = [UIImage imageNamed:imageName];

        if (image) {
            BLCMedia *media = [[BLCMedia alloc] init];
            media.user = [self randomUser];
            media.image = image;

            NSUInteger commentCount = arc4random_uniform(10);
            NSMutableArray *randomComments = [NSMutableArray array];

            for (int i  = 0; i <= commentCount; i++) {
                BLCComment *randomComment = [self randomComment];
                [randomComments addObject:randomComment];
            }

            media.comments = randomComments;

            [randomMediaItems addObject:media];
        }
    }

    self.mediaItems = randomMediaItems;
}

1 个答案:

答案 0 :(得分:0)

您的基本问题是尝试将一种对象类型(NSMutableArray)分配给不同的对象类型(NSString)。您需要确定哪个是正确的类型并使两个对象都键入。

假设您正在创建一个对象数组(BLCMedia),每个对象都具有类型为comments的{​​{1}}属性,以下内容应该可以解决您的问题:< / p>

NSString

但是,如果- (void) addRandomData { NSMutableArray *randomMediaItems = [NSMutableArray array]; for (int i = 1; i < 11; i = i + 1) { NSString *imageName = [NSString stringWithFormat:@"%d.jpg", i]; UIImage *image = [UIImage imageNamed:imageName]; if (image != nil) { BLCMedia *media = [[BLCMedia alloc] init]; media.user = [self randomUser]; media.image = image; NSUInteger commentCount = arc4random_uniform(10); for (int i = 0; i < commentCount; i = i + 1) { BLCComment *randomComment = [self randomComment]; media.comments = randomComment; } [randomMediaItems addObject:media]; } } self.mediaItems = randomMediaItems; } 对象 打算将BLCMedia个对象作为其NSString属性,则以下内容可以解决您的问题:

comments