【发布时间】:2015-02-04 13:02:57
【问题描述】:
我目前正在学习 iOS 开发课程,我在课程中遇到的这行代码会生成以下警告:Incompatible pointer types assignmenting to 'NSString *' from '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;
}
【问题讨论】:
-
你需要花一些时间学习一些 Objective-C 书籍或 Apples 文档。只是抄袭,写不懂的代码不是成功之道。
-
@Zaph 实际上,做到这一点通常是理解之路的第一步。就像孩子形成他们不理解的声音是说话的开始一样,通过复制代码“通过动作”是开始理解它的好方法。
-
@AdrianB 那么你不能给它分配
NSMutableArray。这是错误的对象类型。 -
将
BLCMedia类中comments(media.comments)的类型从NSString更改为NSMutableArray -
@saif 这可能是也可能不是一个好的解决方案。如果
media.comments假定为NSString,则将其更改为NSMutableArray将导致其他问题。
标签: ios objective-c pointers nsmutablearray xcode6