从NSArray分配给NSMutableString的不兼容的指针类型

jus*_* ME 0 objective-c ios

我是iOS新手.

我有以下警告,我不知道如何解决:

NSString *getNos=[textField.text stringByReplacingCharactersInRange:range withString:string];

NSMutableArray *allNos = [[getNos stringByReplacingOccurrencesOfString:@" " withString:@""]componentsSeparatedByString:@","];

NSString *matchNo = [[allNos lastObject] stringByReplacingOccurrencesOfString:@" " withString:@""];
Run Code Online (Sandbox Code Playgroud)

在第二行和第三行,我有以下警告信息:

Incompatible pointer types assigning to 'NSMutableArray * from NSArray *
and
Incompatible pointer types sending NSString * to parameter of type NSMutableString*
Run Code Online (Sandbox Code Playgroud)

zap*_*aph 7

stringByReplacingOccurrencesOfString:返回NSArray不是a NSMutableArray.

要么改变NSMutableArrayNSArray或添加mutableCopy,如果你真的需要一个NSMutableArray:

NSMutableArray *allNos = [[[getNos stringByReplacingOccurrencesOfString:@" " withString:@""]componentsSeparatedByString:@","] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

还有一个拼写错误:缺少"*".

注意:通过使用中间体,代码更容易查看,更容易查明错误:

NSString *getNos = @"a b, c d";
NSString *cleanNos = [getNos stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableArray *allNos = [[cleanNos componentsSeparatedByString:@","] mutableCopy];
NSLog(@"allNos: %@", allNos);
Run Code Online (Sandbox Code Playgroud)

NSLog输出:

allNos: (
    ab,
    cd
)
Run Code Online (Sandbox Code Playgroud)