問題タブ [nssecurecoding]
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.
swift - セットのセキュアコーディング
私のアプリは、カスタム クラスのインスタンスを格納するコア データを使用しますCustomClass
。
このクラスには多数のプロパティがあり、そのほとんどは標準型ですが、1 つのプロパティはxxx: Set<CustomObject>
です。
したがってxcdatamodeld
、 は (標準型を持つ他のものの中で) xxx
type の属性を指定しますTransformable
。xxx
ですSet<CustomObject>
。そのタイプはOptional
で、トランスフォーマーは現在NSSecureUnarchiveFromData
です。
以前は Transformer が指定されていなかったため、デコードは安全ではありませんでした。しかし、安全でないコーディングは将来廃止される予定であるため、Apple は現在、安全なコーディングを使用することを推奨しています。
安全なコーディングを有効にするために、次のことを行い
CustomClass
ましNSSecureCoding
たNSCoding
。
に以下var
が追加されましたCustomClass
。
次にpublic required convenience init?(coder aDecoder: NSCoder) {…}
、属性xxx
が安全にデコードされるように変更しようとしました。私は代わりにそれを知っています
decodeObject(of:forKey:)
ここでof
は、デコードするオブジェクトのタイプです。ここでは typeを使用しますSet<CustomObject>
。
私の問題は、これを定式化する方法がわからないことです:
エラーが発生しますCannot convert value of type 'Set<CustomObject>.Type' to expected argument type '[AnyClass]?' (aka 'Optional<Array<AnyObject.Type>>‘)
。
どうやらコンパイラはコンパイルされませんでした
代わりに
つまりSet<CustomObject>
、単一のタイプとしてではなく、タイプのコレクションとして扱われます。
では、単一の型、つまり のみをデコードするように指定するにはどうすればよいSet<CustomObject>
でしょうか?
swift - [CKRecordZone.ID: CKServerChangeToken] をエンコード/デコードする方法は?
ID とトークンの辞書をエンコード/デコードしようとしています。しかし、何らかの理由で、デコードでは常に nil が返されます。
直し方?