かなり遅くなってしまったんですが、Swift3だったものをSwift4.2に変換しました。
その際に出たエラーをメモしておきたいと思います。
(私が出会ったエラーのみなので、他にも変換時のエラーはたくさんあるとは思います)
もくじ
- 1 #Selector
- 2 Command CompileSwift failed with a nonzero exit code
- 3 Cannot convert value of type ‘String’ to expected dictionary key type ‘NSAttributedString.Key’
- 4 名称の変更
- 4.1 UIApplicationLaunchOptionsKey
- 4.2 bringSubview(toFront:)
- 4.3 UIViewAnimationOptions
- 4.4 UIViewContentMode
- 4.5 UIImageRenderingMode
- 4.6 UIBarButtonItemStyle
- 4.7 UIAlertActionStyle
- 4.8 UITableViewAutomaticDimension
- 4.9 UIControlState
- 4.10 NSFontAttributeName
- 4.11 UIBarButtonSystemItem
- 4.12 NSParagraphStyleAttributeName
- 4.13 UIAlertControllerStyle
- 4.14 UIDatePickerMode
#Selector
<エラー>
Argument of ‘#selector’ refers to instance method ‘(funcの名前)’ that is not exposed to Objective-C
(時によっては、以下の文章と「Fix」ボタンが表示されることもあります)
Add ‘@objc’ to expose this instance method to Objective-C
<翻訳>
‘#selector’の引数は、Objective-Cに公開されていないインスタンスメソッド ‘(funcの名前)’を参照しています
‘@objc’を追加して、このインスタンスメソッドをObjective-Cに公開します。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、funcの前に「@objc」をつけるだけで、エラーが消えました。
例)
button○○○[i].addTarget(self, action: #selector(△△△.(funcの名前)(_:)), for: .touchUpInside)
というところで、エラーが出ていた場合。
func (funcの名前)(_ sender: UIButton) {
↓
@objc func (funcの名前)(_ sender: UIButton) {
Command CompileSwift failed with a nonzero exit code
<エラー>
Command CompileSwift failed with a nonzero exit code
<翻訳>
コマンドCompileSwiftがゼロ以外の終了コードで失敗しました
対処方法
クリーンビルドをすることで、このエラーが無くなりました。
(ただし私の場合は、その後、大量の他のエラーが出てきました…)
・参考:なぜかうまくいかない時:クリーンビルド【iOS・Android】
Cannot convert value of type ‘String’ to expected dictionary key type ‘NSAttributedString.Key’
<エラー>
Cannot convert value of type ‘String’ to expected dictionary key type ‘NSAttributedString.Key’
<翻訳>
タイプ ‘String’の値を予期されたディクショナリキータイプ ‘NSAttributedString.Key’に変換できません
対処方法
‘String‘を ’NSAttributedString.Key‘に 置き換える。
例)
let aaaaa = NSMutableAttributedString(string: bbbbb, attributes: [
kCTLanguageAttributeName as String : ccccc,
NSFontAttributeName : ddddd
])
↓
let aaaaa = NSMutableAttributedString(string: bbbbb, attributes: [
kCTLanguageAttributeName as NSAttributedString.Key : ccccc,
NSFontAttributeName : ddddd
])
名称の変更
UIApplicationLaunchOptionsKey
<エラー>
‘UIApplicationLaunchOptionsKey’ has been renamed to ‘UIApplication.LaunchOptionsKey’
Replace ‘UIApplicationLauncOptionsKey’ with ‘UIApplication.LaunchOptionsKey’
<翻訳>
「UIApplicationLaunchOptionsKey」は「UIApplication.LaunchOptionsKey」に名前が変更されました
「UIApplicationLauncOptionsKey」を「UIApplication.LaunchOptionsKey」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIApplicationLauncOptionsKey」を「UIApplication.LaunchOptionsKey」に置き換える。
bringSubview(toFront:)
<エラー>
‘bringSubview(toFront:)’ has been renamed to ‘bringSubviewToFront(_:)’
Replace ‘bringSubview(toFront: ‘ with ‘bringSubviewToFront(‘
<翻訳>
「bringSubview(toFront :)」は「bringSubviewToFront(_ :)」に名前が変更されました。
「bringSubview(toFront:」を「bringSubviewToFront(」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「bringSubview(toFront:」を「bringSubviewToFront(」に置き換える。
UIViewAnimationOptions
<エラー>
‘UIViewAnimationOptions’ has been renamed to ‘UIView.AnimationOptions’
Replace ‘UIViewAnimationOptions’ with ‘UIView.AnimationOptions’
<翻訳>
「UIViewAnimationOptions」は「UIView.AnimationOptions」に名前が変更されました。
「UIViewAnimationOptions」を「UIView.AnimationOptions」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIViewAnimationOptions」を「UIView.AnimationOptions」に置き換える。
UIViewContentMode
<エラー>
‘UIViewContentMode’ has been renamed to ‘UIView.ContentMode’
Replace ‘UIViewContentMode’ with ‘UIView.ContentMode’
<翻訳>
「UIViewContentMode」は「UIView.ContentMode」に名前が変更されました。
「UIViewContentMode」を「UIView.ContentMode」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIViewContentMode」を「UIView.ContentMode」に置き換える。
UIImageRenderingMode
<エラー>
‘UIImageRenderingMode’ has been renamed to ‘UIImage.RenderingMode’
Replace ‘UIImageRenderingMode’ with ‘UIImage.RenderingMode’
<翻訳>
「UIImageRenderingMode」は「UIImage.RenderingMode」に名前が変更されました。
「UIImageRenderingMode」を「UIImage.RenderingMode」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIImageRenderingMode」を「UIImage.RenderingMode」に置き換える。
UIBarButtonItemStyle
<エラー>
UIBarButtonItemStyle’ has been renamed to ‘UIBarButtonItem.Style’
Replace ‘UIBarButtonItemStyle’ with ‘UIBarButtonItem.Style’
<翻訳>
UIBarButtonItemStyle」の名前が「UIBarButtonItem.Style」に変更されました。
「UIBarButtonItemStyle」を「UIBarButtonItem.Style」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIBarButtonItemStyle」を「UIBarButtonItem.Style」に置き換える。
UIAlertActionStyle
<エラー>
‘UIAlertActionStyle’ has been renamed to ‘UIAlertAction.Style’
Replace ‘UIAlertActionStyle’ with ‘UIAlertAction.Style’
<翻訳>
「UIAlertActionStyle」は「UIAlertAction.Style」に名前が変更されました
「UIAlertActionStyle」を「UIAlertAction.Style」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIAlertActionStyle」を「UIAlertAction.Style」に置き換える。
UITableViewAutomaticDimension
<エラー>
‘UITableViewAutomaticDimension’ has been renamed to ‘UITableView.automaticDimension’
Replace ‘UITableViewAutomaticDimension’ with ‘UITableView.automaticDimension’
<翻訳>
「UITableViewAutomaticDimension」は「UITableView.automaticDimension」に名前が変更されました。「UITableViewAutomaticDimension」を「UITableView.automaticDimension」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UITableViewAutomaticDimension」を「UITableView.automaticDimension」に置き換える。
UIControlState
<エラー>
‘UIControlState’ has been renamed to ‘UIControl.State’
Replace ‘UIControlState’ with ‘UIControl.State’
<翻訳>
「UIControlState」は「UIControl.State」に名前が変更されました。
「UIControlState」を「UIControl.State」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIControlState」を「UIControl.State」に置き換える。
NSFontAttributeName
<エラー>
‘NSFontAttributeName’ has been renamed to ‘NSAttributedString.Key.font’
Replace ‘NSFontAttributeName’ with ‘NSAttributedString.Key.font’
<翻訳>
「NSFontAttributeName」は「NSAttributedString.Key.font」に名前が変更されました。
「NSFontAttributeName」を「NSAttributedString.Key.font」に置き換えます。
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「NSFontAttributeName」を「NSAttributedString.Key.font」に置き換える。
UIBarButtonSystemItem
<エラー>
‘UIBarButtonSystemItem’ has been renamed to ‘UIBarButtonItem.SystemItem’
Replace ‘UIBarButtonSystemItem’ with ‘UIBarButtonItem.SystemItem’
<翻訳>
「UIBarButtonSystemItem」は「UIBarButtonItem.SystemItem」に名前が変更されました
「UIBarButtonSystemItem」を「UIBarButtonItem.SystemItem」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIBarButtonSystemItem」を「UIBarButtonItem.SystemItem」に置き換える。
NSParagraphStyleAttributeName
<エラー>
‘NSParagraphStyleAttributeName’ has been renamed to ‘NSAttributedString.Key.paragraphStyle’
Replace ‘NSParagraphStyleAttributeName’ with ‘NSAttributedString.Key.paragraphStyle’
<翻訳>
「NSParagraphStyleAttributeName」は「NSAttributedString.Key.paragraphStyle」に名前が変更されました
「NSParagraphStyleAttributeName」を「NSAttributedString.Key.paragraphStyle」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「NSParagraphStyleAttributeName」を「NSAttributedString.Key.paragraphStyle」に置き換える。
UIAlertControllerStyle
<エラー>
‘UIAlertControllerStyle’ has been renamed to ‘UIAlertController.Style’
Replace ‘UIAlertControllerStyle’ with ‘UIAlertController.Style’
<翻訳>
「UIAlertControllerStyle」は「UIAlertController.Style」に名前が変更されました
「UIAlertControllerStyle」を「UIAlertController.Style」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIAlertControllerStyle」を「UIAlertController.Style」に置き換える。
UIDatePickerMode
<エラー>
‘UIDatePickerMode’ has been renamed to ‘UIDatePicker.Mode’
Replace ‘UIDatePickerMode’ with ‘UIDatePicker.Mode’
<翻訳>
「UIDatePickerMode」は「UIDatePicker.Mode」に名前が変更されました
「UIDatePickerMode」を「UIDatePicker.Mode」に置き換えます
対処方法
「Fix」ボタンが表示されていたら、それをクリックする。
表示されなかった場合は、「UIDatePickerMode」を「UIDatePicker.Mode」に置き換える。