問題タブ [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.
ios - Xcode 9 & Swift 4 - View Controller を提示すると予期しないクラッシュが発生する
Xcode 9 Beta 1 および Swift 4 を使用している場合にのみクラッシュが発生します。View Controller を表示しようとしていますが、すべての例外をキャッチするためのブレークポイントがいくつかあるにもかかわらず、例外がスローされます。Xcode はどこにも停止しません。
Xcodeがそれをしなかったので、lldbを使用して例外を出力することができました。これが私が得たものです:
スタック トレースは次のとおりです。
そしてバックトレース:
UIDeviceRGBColor
認識されないセレクターと関係があることは理解していますが、 orでは何もしていませんPointSize
。
何が起こっているのかよくわかりませんが、Xcode 8 に切り替えると、これはすべて正常に機能します。
再現したい場合は、ここfeatures/ios11
でプロジェクトを複製して、ブランチに切り替えてください。イントロ画面を終了し、+
ボタンをクリックするだけです。クラッシュはその後すぐに発生します。Xcode 9 Beta 1を使用して実行する
これはベータ版のバグである可能性があることは理解していますが、これについてより多くの経験がある場合は、少なくとも Xcode のバグレポートを提出する方法について助けていただければ幸いです。
ありがとう!
json - Swift 4 の JSONDecoder を使用すると、欠落しているキーがオプションのプロパティである代わりにデフォルト値を使用できますか?
Swift 4 では、新しいCodable
プロトコルが追加されました。私が使用JSONDecoder
すると、クラスのオプションではないすべてのプロパティがCodable
JSON にキーを持つ必要があるように見えます。そうしないと、エラーがスローされます。
クラスのすべてのプロパティをオプションにすることは、本当に必要なのはjsonの値またはデフォルト値を使用することであるため、不必要な面倒のように思えます。(プロパティをnilにしたくありません。)
これを行う方法はありますか?
swift - Swift 4 でのジェネリック型の拡張
2 つのプロトコルと一般的な構造体があります。
DataSet
の場合にのみ適用されるメソッドが多数ありElement
ますTwoDimensionalDataPoint
。そこで、次のような拡張機能を作成しました。
コンパイラはこれを好まず、次のように言います。
タイプ 'DataSet.Element' (別名 'OneDimensionalDataPoint') の値にメンバー 'x' がありません
TwoDimensionalDataPoint
拡張機能でElement を制約したので、これでいいのではないでしょうか?
ios - IOS: セグメント切り替え時の「スレッド 1: Signal SIGABRT」
私は、ビッグ ナード ブランチの「iOS プログラミング 第 5 版」という本を読んでいます。
このコードは、マップ ビューでセグメント化されたビューを作成し、実行時にセグメントを変更するたびに、次のようにクラッシュします。
スレッド 1: シグナル SIGABRT
最新バージョンを使用している間に、本の古いバージョンのSwiftに関係している可能性があります。
これが私のコードです:
これを修正するにはどうすればよいですか?
ios - 拡張機能の宣言は Swift 4 でまだエラーをオーバーライドできません
私は拡張機能を持っています:
しかし、私topMostController
の場合、次のエラーが発生します:
Swift 3.1 では問題なく動作しますが、Swift 4 ではこのエラーが発生します。どうすれば修正できますか?Swift 4 で何が変更されましたか?
ios - NavigationBar setTitleVerticalPositionAdjustment(_:for:) メソッドが iOS 11 ベータ版のタイトル画像で機能しない
iOS10 (Swift 3) で正常に動作するコードが iOS11 Beta (Swift 4 / XCode 9.0 beta) では動作しない
画像をナビゲーション バーのタイトルとして設定し、垂直位置を調整します。
self.navigationItem.titleView = UIImageView(image: UIImage(named: "some_image"))
self.navigationController?.navigationBar.setTitleVerticalPositionAdjustment(-4.0, for: .default)
画像は iOS 11 ベータ版では垂直方向に調整されませんが、iOS 10 では問題なく動作します。
self.title = "Some title"
ナビゲーションバーのタイトルがテキスト ( ) として設定されている場合、メソッドは正常に機能することに注意してくださいsetTitleVerticalPositionAdjustment(_:for:)
。この問題は、UIImageView をナビゲーションバーのタイトルとして使用しようとした場合にのみ明らかになります。
最近、似たようなことを経験した人はいますか?
ios - タイプ '(_) -> ()' の値をタイプ '((String, String, String, Int) -> ())' に代入できませんか?
私はこのように定義されたクロージャーを持っています、
このように更新されるものは、
そして、このように使用すると、
エラー:
タイプ '(_) -> ()' の値をタイプ '((String, String, String, Int) -> ())' に代入できませんか?
しかし、これにより上記のエラーが発生し、どうすればよいかわかりませんか?
同じことがSwift 3.xでも問題なく機能しています。
barcode - iOS 11 向け Vision Framework バーコード検出
Apple が WWDC2017 で導入した新しい Vision フレームワークのテストを実装しています。私は特にバーコード検出を検討しています-カメラ/ギャラリーから画像をスキャンした後、それがバーコード画像であるかどうかを取得できました。しかし、barcodeDescriptor を見ると、実際のバーコード値やペイロード データがわかりません。https://developer.apple.com/documentation/coreimage/cibarcodedescriptorページには、プロパティを特定するための情報は何も公開されていないようです。
次のエラーが表示されます。
- リモート サービスに接続できません: エラー Domain=NSCocoaErrorDomain Code=4097 "
com.apple.BarcodeSupport.BarcodeNotificationService という名前のサービスへの接続"- libMobileGestalt MobileGestalt.c:555: InverseDeviceID にアクセスできません (problem/11744455 を参照>)
- com.apple.BarcodeSupport.BarcodeNotificationService という名前のサービスへの接続 エラー
Domain=NSCocoaErrorDomain Code=4097
VNBarcodeObservation からバーコード値にアクセスする方法はありますか? どんな助けでも大歓迎です。ありがとうございました!私が使用しているコードは次のとおりです。
swift - 制約付きプロトコルから継承する汎用プロトコルの制約
私はそのようなジェネリックを利用しようとしています。
の定義でエラーが発生していますB
:
同型制約タイプ 'X' は、必要なプロトコル 'Y' に準拠していません
しかし、X
準拠していY
ます...
DataPoint
私はそのような仲介関連型を使用してみました
しかし、同じエラーが発生します。Swift 4 でこの種のことを達成することは可能ですか、それとも 2 つの完全に別個のプロトコルを作成する必要がありますか?
ios - ネストされたものが配列でない限り、Swift `Decodable` はネストされた JSON オブジェクトに対して機能しません
私はいくつかの JSON 解析コードを新しい AppleDecodable
プロトコルを使用するように変換し始めており、Apple のテスト中に見逃すにはあまりにも基本的なブロッカーにぶつかったので、何かばかげたことをしているのではないかと思っています。要するに、私はこのような JSON グラフを解析しようとしています。私はデコードしているだけなので、Decodable に準拠するだけで十分だと思いましたが、エラーから、希望するものを取得するには Codable (Decodable & Encodable) に準拠する必要があるようです。デコード効果:
このケースで動作します:
ネストされたオブジェクトの配列ですが、単一のオブジェクトではありません。
これは Swift のバグですか、それとも何か問題がありますか?
問題を証明できるサンプルのプレイグラウンドを次に示します。Animal クラスが準拠してDecodable
いる場合、配列のケースは解析されませんが、Animal を準拠するように設定するCodable
と機能します。ここでは JSON をデコードしているだけなので、これが当てはまるとは思いません。