1
私はスウィフトにへ:#selector(セッター:object.font)
+ (void)setFontName:(NSString*)fontName onObject:(id)object {
if ([object respondsToSelector:@selector(setFont:)]) {
UIFont* font = [UIFont fontWithName:fontName size:((UIFont *)[object font]).pointSize];
[object setFont:font];
}
}
完全に正常に動作します。このObjective-Cのメソッド書き換えしようとしています:
public static func setFontRewriting(fontName: String, object: AnyObject) {
if object.responds(to:#selector(setter: object.font)) {
let currentFont: UIFont = object.font
let fontToSet = UIFont(name: fontName, size: currentFont.pointSize)
object.font = fontToSet //doesn't work, getting various syntax errors
}
}
を
オブジェクトがこのセレクタに応答しても、フォントを設定することはできません。 object.setFont
もどちらも動作しません。助言がありますか?
オブジェクトの型はANYOBJECTです。セッターを呼び出す前にキャストする必要があります。 – ClemensL
これを読んでください:[SWIFT AND CUSTOMER OF ANYOBJECT](http://blog.scottlogic.com/2014/09/24/swift-anyobject.html)スウィフトとAnyObjectについてもう少し理解してください。 – Kevinosaurio