API にヒットするクライアントを作成しています。APIはこれを吐き出します:
Id: 33,
UserUrl: "https://example.com/username/profile",
Title: "I wanna give 'em the holy boot!",
IsOnline: "no"
JSON を NSDictionary として使用し、setValuesForKeysWithDictionary: を使用して User オブジェクトに変換します。私の User.m には、着信 UserUrl 文字列を受け取り、次のように NSURL に曲げるカスタム セッターがあります。
- (void)setUserUrl:(NSString *)stringInput {
_UserUrl = [NSURL URLWithString:stringInput];
}
これはうまくいきます。BOOL で同じことを試みると、次の警告が表示されます。
「setIsSecret:」の実装における競合するパラメーター タイプ: 「BOOL」(別名「signed char」) と「NSString *__strong」
- (void)setIsOnline:(NSString *)stringInput {
if ([stringInput isEqualToString:@"yes"])
_IsOnline = YES;
else
_IsOnline = NO;
}
ユーザー.h
@interface Achievement : NSObject
@property (strong, nonatomic) NSNumber *Id;
@property (strong, nonatomic) NSURL *UserUrl;
@property (strong, nonatomic) NSString *Title;
@property (nonatomic) BOOL IsOnline;
@end
私のコードは正常にコンパイルされ、実行されます。NSString プロパティではなく BOOL プロパティで警告が表示される理由を知りたいだけです。これは API ラッパー用なので、警告を抑制したくありません。前もって感謝します。
UPDATE rmaddy に正解がありました。将来同じことをしようとしている人は、すべての型変換を行うカスタム初期化子を作成してください。