我目前正在参加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;
}
答案 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