問題タブ [swift4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - Swift 4 の Decodable プロトコルでカスタム キーを使用するにはどうすればよいですか?
Decodable
Swift 4 では、プロトコルを介したネイティブ JSON エンコーディングとデコーディングのサポートが導入されました。これにカスタム キーを使用するにはどうすればよいですか?
たとえば、構造体があるとします
これを JSON にエンコードできます。
これをエンコードしてオブジェクトに戻すことができます。
しかし、jsonオブジェクトがあった場合
にマップされAddress
ているデコーダーにどのように伝えますか? 新しいプロトコルを使用していると思いますが、これを使用する方法がわかりません。zip_code
zip
CodingKey
swift - コアデータでswift 4 Codableを使用するには?
Codable は非常にエキサイティングな機能のようです。しかし、それを Core Data でどのように使用できるのだろうか? 特に、NSManagedObject との間で JSON を直接エンコード/デコードすることは可能ですか?
私は非常に簡単な例を試しました:
そして自分自身を定義しましたFoo
:
しかし、次のように使用する場合:
コンパイラは次のエラーで失敗しました:
ターゲットファイルは、定義されたファイルでしたFoo
を渡さなかったので、おそらく間違っていたとNSManagedObjectContext
思いますが、どこに貼り付けるかわかりません。
Core Data は をサポートしていCodable
ますか?
ios - @objcなしのSwift 4 CADisplayLink
Swift 4 では、@objc func を使用すると警告が表示されるようになりましたが、実際には回避したほうがよいことがわかりました。CADisplayLink のようなアニメーション用の正確なタイマーを作成する必要があります。問題は、CADisplayLink が #selector を使用していることです。これを使用するには、@objc 関数を作成する必要があります。Swift 4に代替手段はありますか?
ios - Xcode 9 ローカリゼーションが機能しない?
しばらくの間、アプリをデンマーク語にローカライズしていましたが、Xcode 9 を更新してシミュレーターで実行すると、すべてがデンマーク語で表示されるようになりました...理由がわかりません。
すべての設定が英語で米国に設定されていることを確認しましたが、シミュレーターでアプリを実行すると、すべてがデンマーク語で表示されました。誰もこれについて何か知っていますか?もしかしてただのベータバグ?ありがとう!!
swift-playground - Xcode プレイグラウンドで Core ML モデルを使用することは可能ですか?
CoreML
現在、モデルを使用してデータの確率を検出するアプリケーションに取り組んでいます。
しかし、Xcode プレイグラウンドでモデルを使用できるかどうかを知りたいですCoreML
。テスト目的により便利になるからです。
Xcode 9 プレイグラウンドにモデルを追加しようとしましたが、運がありません。
swift - Swift 4 - associatedtype からジェネリック制約をサブクラス化する
基本クラスを指定する型を必要とする Swift プロトコルを作成し、その基本クラスのサブクラスで動作するメソッドを実装したいと考えています。これは次のようになります (コンパイルされません)。
ただし、これにより次のコンパイラ エラーが生成されます。
Inheritance from non-protocol, non-class type 'Self.BaseModel'
BaseModel は構造体型で指定でき、サブクラス化は許可されないため、これは理にかなっています。そこで、クラスに制約された空のプロトコルを作成して、この型がクラス型になり、サブクラスの制約を許可することをコンパイラに通知しようとしました。
protocol Model: class { }
次に、Model クラス プロトコルを使用して BaseModel 型を制約しました。
associatedtype BaseModel: Model
しかし、これは上記と同じコンパイラ エラーを生成します。associatedtype
プロトコルからサブクラスの制約を適用することは可能ですか? 上記がコンパイルされるか、Swift が次のようなものを許可してサブクラスの制約を許可することを期待します。
associatedtype BaseModel: class
swift - Swift 4 での @objc 推論の使用
次の警告が表示されます。
「#selector」の引数は、Swift 4 で廃止された「@objc」属性の推論に依存する「CustomTableViewController」のインスタンス メソッド「customButtonDidTouch()」を参照します
Xcode は@objc
私のcustomButtonDidTouch()
メソッドに追加することを提案しますが、そうすると、次のような別の警告が表示されます。
Swift 4 モードでの Swift 3 @objc 推論の使用は非推奨です。非推奨の @objc 推論の警告に対処し、「非推奨の Swift 3 @objc 推論の使用」ログを有効にしてコードをテストし、Swift 3 @objc 推論を無効にしてください。
助言がありますか?
swift - コーディング可能なプロトコルの適合性
に準拠したコンテナ タイプを実装したいのですCodable
が、少し問題が発生しています。コンテナをジェネリック化して、エンコード可能およびデコード可能な要素を保持したいと考えています。当初、私はこれを持っていました:
...しかし、ある種の型安全性を確保できるように変更しました。誰かがここで何が起こっているのか正確に説明できますか?
マイコード
コンパイラ出力