我不明白以下警告:
不兼容的指针类型将'NSError*__ strong*'发送到'NSString*__ autoreleasing*'类型的参数
抛出这个的方法是
BSSPhoneNumberFormatter *formatter = [[BSSPhoneNumberFormatter alloc] init];
NSString *tmp = self.dtlPhnNbr.text;
id objectValue;
NSError *error;
[formatter getObjectValue:&objectValue forString:tmp errorDescription:&error];
Run Code Online (Sandbox Code Playgroud)
最后一行有警告.
BSSPhoneNumberFormatter的h文件是
#import <Foundation/Foundation.h>
@interface BSSPhoneNumberFormatter : NSFormatter
@end
Run Code Online (Sandbox Code Playgroud)
而且方法是
- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error {
*anObject = (id)[self stripNonDigits:string];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我知道(NSString**)错误是指向指针的指针.一个不同的帖子说要在调用的方法和调用方法中用(NSString*)替换(NSString**),但如果我这样做,我会得到很多错误.
到底是怎么回事?
方法中的最后一个参数:
- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error
Run Code Online (Sandbox Code Playgroud)
是
errorDescription:(NSString **)error
Run Code Online (Sandbox Code Playgroud)
它是指向NSString的指针,但您传递的是NSError.将通话更改为:
NSString *error; <-- Change object type to NSString here
[formatter getObjectValue:&objectValue forString:tmp errorDescription:&error];
Run Code Online (Sandbox Code Playgroud)
您也可以替换方法来接受NSError**作为参数而不是NSString**.这取决于最适合您的项目要求.
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |