在目标C中,我有:
NSMutableArray *retVal = [[NSMutableArray alloc]initWithCapacity:1];
NSMutableString *justTest = [[NSMutableString alloc]initWithString:@"hello"];
unsigned char ch = //anything
[retVal insertObject:[justTest appendFormat:@"%hhu", ch] atIndex:0]; //error here
X Code 5.1.1在第4行给我一个错误(如评论所述)为Sending 'void' to parameter of incompatible type 'id'
我在这里做错了什么?任何帮助表示赞赏。
答案 0 :(得分:1)
如果您读过Apple Documentation for NSMutableString
,您会发现实例方法appendString:
实际上没有返回值。它将结构化字符串添加到接收的末尾,就是这样。
因此,当您执行[retVal insertObject:[justTest appendFormat:@"%hhu", ch] atIndex:0];
时,您确实在做[retVal insertObject:void atIndex:0];
,显然您无法将void
作为期望id
的有效对象的参数传递。
以下是方法声明:- (void)appendFormat:(NSString *)format ...
您可以看到返回类型为void
。
所以你需要做的是在将字符串传递给insertObject:atIndex:
方法之前需要对字符串进行修改。
所以改为
[justTest appendFormat:@"%hhu", ch]; // Append to existing string, DOESN'T return anything
[retVal insertObject:justTest atIndex:0]; // Pass string in as object at index
答案 1 :(得分:0)
appendFormat
没有返回任何内容,它会调整可变字符串。你需要这样做:
NSMutableArray *retVal = [[NSMutableArray alloc]initWithCapacity:1];
NSMutableString *justTest = [[NSMutableString alloc]initWithString:@"hello"];
unsigned char ch = //anything
[justTest appendFormat:@"%hhu", ch]
[retVal insertObject:justTest atIndex:0]; //error here
答案 2 :(得分:0)
[justTest appendFormat:@"%hhu", ch]
返回无效。
你需要:
[retVal insertObject:([justTest appendFormat:@"%hhu", ch],justTest) atIndex:0];