タグ付けされた質問 「swift4」

このタグは、AppleのSwiftプログラミング言語のバージョン4の変更に直接関連する質問にのみ使用してください。より一般的な言語の質問にはタグ[swift]を使用します。Appleプラットフォームでの開発に関する質問には[ios]、[cocoa]、[apple-watch]などのタグを使用します。

12
Swift 4モードでのSwift 3 @objc推論の使用は非推奨ですか?
簡単に言うと、Xcode 9 Betaを使用しているときに、次の警告が表示されました。 Swift 4モードでのSwift 3 @objc推論の使用は非推奨です。非推奨の@objc推論の警告に対処し、「非推奨のSwift 3 @objc推論の使用」ログを有効にしてコードをテストし、Swift 3 @objc推論を無効にしてください。** いくつかの調査の後、私はまだ問題を修正する方法を知りません。この問題を解決するためのヒントと、何が起こっているのかについての説明をいただければ幸いです。 私の目標は、コードで何が起こっているかをよりよく理解することです。

13
Swift 3、4、および5でdispatch_after GCDを書き込むにはどうすればよいですか?
Swift 2では、dispatch_afterグランドセントラルディスパッチを使用してアクションを遅らせることができました。 var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime, dispatch_get_main_queue(), { // your function here }) しかし、これはSwift 3以降、コンパイルされなくなったようです。現代のSwiftでこれを書くための好ましい方法は何ですか?

18
Swift 4で文字列スライスの添え字を使用するにはどうすればよいですか?
Swift 3で記述した次の簡単なコードがあります。 let str = "Hello, playground" let index = str.index(of: ",")! let newStr = str.substring(to: index) Xcode 9ベータ5から、次の警告が表示されます。 ' substring(to:)'は非推奨です:String'部分範囲範囲'演算子を使用してスライス添字を使用してください。 部分的な範囲を持つこのスライス添字は、Swift 4でどのように使用できますか?
294 swift  swift4 

7
警告: '文字'は廃止されました:文字列または部分文字列を直接使用してください
文字 -文字列のインスタンス・プロパティは、とから廃止されましたXcodeの9.1 charactersプロパティを使用して文字列から部分文字列を取得することは非常に便利でしたが、現在は非推奨であり、Xcodeはの使用を提案していますsubstring。私は、SOの質問とアップル開発者向けのチュートリアル/ガイドラインをチェックしてみました。しかし、提案された解決策/代替案を見つけることができませんでした。 ここに警告メッセージがあります: '文字'は廃止されました:文字列または部分文字列を使用してください propertyを使用して多くの文字列操作が実行/処理されましたcharacters。 誰もがこの更新について何かアイデア/情報を持っていますか?

5
Swift 4の#selector()で@objc推論の非推奨に対処するにはどうすればよいですか?
プロジェクトのソースコードをSwift 3からSwift 4に変換しようとしています。Xcodeから出される警告の1つは、セレクターに関するものです。 たとえば、次のような通常のセレクターを使用してボタンにターゲットを追加します。 button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside) これはそれが示す警告です: 「#selector」の引数は、Swift 4で廃止された「@objc」属性推論に依存する「ViewController」のインスタンスメソッド「myAction()」を参照しています '@objc'を追加して、このインスタンスメソッドをObjective-Cに公開します。 今、Fixエラーメッセージを打つことは私の関数に対してこれを行います: // before func myAction() { /* ... */ } // after @objc func myAction() { /* ... */ } @objcマークを含むようにすべての関数の名前を変更したくないので、その必要はありません。 非推奨に対処するためにセレクターをどのように書き換えますか? 関連する質問: Swift 4モードでのSwift 3 @objc推論の使用は非推奨ですか?
131 swift  xcode  swift4 

13
単一の要素のデコードが失敗した場合、Swift JSONDecodeのデコード配列が失敗する
Swift4とCodableプロトコルを使用しているときに、次の問題が発生しました- JSONDecoder配列内の要素をスキップする方法がないようです。たとえば、次のJSONがあります。 [ { "name": "Banana", "points": 200, "description": "A banana grown in Ecuador." }, { "name": "Orange" } ] そして、コード化可能な構造体: struct GroceryProduct: Codable { var name: String var points: Int var description: String? } このjsonをデコードするとき let decoder = JSONDecoder() let products = try decoder.decode([GroceryProduct].self, from: json) 結果productsは空です。JSONの2番目のオブジェクトには"points"キーpointsがありませんが、GroceryProduct構造体ではオプションではないため、これは予期されることです。 質問は、JSONDecoder無効なオブジェクトを「スキップ」できるようにするにはどうすればよいですか?
116 arrays  json  swift  swift4  codable 

7
Swift 4のJSONDecoderを使用すると、欠落しているキーがオプションのプロパティでなくても、デフォルト値を使用できますか?
Swift 4は新しいCodableプロトコルを追加しました。私が使用JSONDecoderすると、CodableクラスのオプションではないすべてのプロパティにJSONのキーが必要になるか、エラーがスローされます。 私のクラスのすべてのプロパティをオプションにすることは、私が本当に望んでいるのはjsonの値またはデフォルト値を使用することなので、不要な手間のように思えます。(このプロパティをnilにしたくありません。) これを行う方法はありますか? class MyCodable: Codable { var name: String = "Default Appleseed" } func load(input: String) { do { if let data = input.data(using: .utf8) { let result = try JSONDecoder().decode(MyCodable.self, from: data) print("name: \(result.name)") } } catch { print("error: \(error)") // `Error message: "Key not found when …
114 json  swift  swift4  codable 


12
Swift 4デコード可能なプロトコルでJSON辞書のタイプを使用してプロパティをデコードする方法
顧客オブジェクトにJSON辞書を含むことができるプロパティCustomerを含むデータ型があるとしましょうmetadata struct Customer { let id: String let email: String let metadata: [String: Any] } { "object": "customer", "id": "4yq6txdpfadhbaqnwp3", "email": "john.doe@example.com", "metadata": { "link_id": "linked-id", "buy_count": 4 } } metadataプロパティには、任意のJSONマップオブジェクトにすることができます。 逆シリアル化されたJSONからプロパティをキャストする前にNSJSONDeserialization、新しいSwift 4 Decodableプロトコルを使用しても、それを行う方法を考えることができません。 DecodableプロトコルでSwift 4でこれを達成する方法を誰かが知っていますか?
103 json  swift  swift4  codable 

4
Swift 4のDecodableプロトコルでカスタムキーを使用するにはどうすればよいですか?
Swift 4では、Decodableプロトコルを介したネイティブJSONエンコーディングおよびデコーディングのサポートが導入されました。これにカスタムキーを使用するにはどうすればよいですか? たとえば、構造体があるとしましょう struct Address:Codable { var street:String var zip:String var city:String var state:String } これをJSONにエンコードできます。 let address = Address(street: "Apple Bay Street", zip: "94608", city: "Emeryville", state: "California") if let encoded = try? encoder.encode(address) { if let json = String(data: encoded, encoding: .utf8) { // Print JSON String print(json) …
102 json  swift  swift4  codable 

12
ナビゲーションバーrightbaritem画像ボタンバグiOS 11
このコードはios10では問題なく動作します。私は自分のラベルと、ユーザーの写真プロファイルである円形の円形の画像ボタンを取得します。しかし、xcode 9 ios11シミュレーターを実行すると、ストレッチアウトされます。ボタンフレームは32x32である必要があります。これは、simをチェックしてビューを取得し、xcodeにビューを説明するように指示すると、170x32またはそのような何かの出力が得られます。 私のコードはこちらです。 let labelbutton = UIButton( type: .system) labelbutton.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside) labelbutton.setTitleColor(UIColor.white, for: .normal) labelbutton.contentHorizontalAlignment = .right labelbutton.titleLabel?.font = UIFont.systemFont(ofSize: 18.00) let button = UIButton(type: .custom) button.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside) button.frame = CGRect(x: 0, y: 0, width: 32, height: 32) button.setTitleColor(UIColor.white, for: .normal) button.setTitleColor(UIColor.white, for: .highlighted) var …
101 ios  swift  ios11  xcode9-beta  swift4 


6
Swift Decodableプロトコルを使用してネストされたJSON構造体をデコードする方法は?
これが私のJSONです { "id": 1, "user": { "user_name": "Tester", "real_info": { "full_name":"Jon Doe" } }, "reviews_count": [ { "count": 4 } ] } 保存したい構造は次のとおりです(不完全) struct ServerResponse: Decodable { var id: String var username: String var fullName: String var reviewCount: Int enum CodingKeys: String, CodingKey { case id, // How do i …
90 json  swift  swift4  codable 

7
UIApplication.registerForRemoteNotifications()は、メインスレッドからのみ呼び出す必要があります
Xcode 9(iOS 11)は、プッシュ(リモート)通知の登録中にエラー/警告を表示します。 これがエラーメッセージです そしてここにコードがあります、私は試しました: let center = UNUserNotificationCenter.current() center.delegate = self center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in if error == nil{ UIApplication.shared.registerForRemoteNotifications() } } エラー/警告行: UIApplication.shared.registerForRemoteNotifications() これを解決する方法は?

5
ビューをクリックするとナビゲーションバーが表示される
問題のビデオを添付します。ビューコントローラーのナビゲーションバーのどこかをクリックすると、 override func viewWillAppear(_ animated: Bool) { self.navigationController?.setNavigationBarHidden(true, animated: true) self.navigationController?.isNavigationBarHidden = true self.navigationController?.hidesBarsOnTap = true } 上記のコードは、viewに追加すると最初は機能しているように見えますが、画面のどこかをクリックすると、ナビゲーションバーが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.