![](/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.