![](/img/trans.png)
[英]Warning: Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray<NSString *> * _Nullable'
[英]Incompatible pointer types assigning to 'NSString *' from 'NSMutableArray *'
我目前正在上一个iOS开发课程,并且在课程中遇到的这一行代码会产生以下警告:不兼容的指针类型从'NSMutableArray *'分配给'NSString *'。
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;
}
您的基本问题是尝试将一种对象类型( NSMutableArray
)分配给另一种对象类型( NSString
)。 您需要确定哪个是正确的类型,然后使两个对象都键入该类型。
假设您要创建一个对象数组( BLCMedia
),每个对象都有一个NSString
类型的comments
属性,则以下内容将解决您的问题:
- (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
属性,下面将解决您的问题:
// In BLCMedia.h/.m
// Change this:
@property (copy , nonatomic) NSString *randomComments;
// To this:
@property (strong, nonatomic) NSMutableArray *randomComments;
- (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);
NSMutableArray *randomComments = [NSMutableArray array];
for (int i = 0; i <= commentCount; i = i + 1) {
BLCComment *randomComment = [self randomComment];
[randomComments addObject:randomComment];
}
media.comments = randomComments;
[randomMediaItems addObject:media];
}
}
self.mediaItems = randomMediaItems;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.