私は単純な音楽シーケンサーアプリケーションを開発しています。この種のアプリは複雑なデータ構造を持つ傾向があり、保存/ロードする必要があるので、Swift4にCodable
プロトコルを導入することはまったく良いニュースです。Swift4 Condable:プロパティを除外できません
私の問題はこれです: 私は非コーディング可能なプロパティを持っている必要があります。これは、アプリケーションがアクティブな間に一時的な変数が生きているだけなので、コード化する必要はありません。 CodingKey
を実装して除外しようとしましたが、コンパイラは "Type 'Song'がプロトコル 'Decodable'に準拠していないというエラーを表示します。
具体的には、以下のコードで「musicSequence」を除外します。
誰かがアイデアを持っていますか?
class Song : Codable { //Type 'Song' does not conform to protocol 'Decodable'
var songName : String = "";
var tempo : Double = 120;
// Musical structure
var tracks : [Track] = [] // "Track" is my custom class, which conforms Codable as well
// Tones
var tones = [Int : ToneSettings](); // ToneSettings is also my custom Codable class
var musicSequence : MusicSequence? = nil; // I get the error because of this line
private enum CodingKeys: String, CodingKey {
case songName
case tempo
case tracks
case tones
}
func createMIDISequence() {
// Create MIDI sequence based on "tracks" above
// and keep it as instance variable "musicSequence"
}
}
Xcode 9ベータ5でテストした限り、コードは問題なくコンパイルされ、/ encodeから "musicSequence"なしでJSONデータにデコードできます。古いベータ版で試した場合、古いベータ版のバグかもしれません。ベータ5でコードをテストし、説明したエラーが発生した場合は、他の部分が影響を受ける可能性があるため、問題を再現するためにさらにコンテキストを表示する必要があります。チェックしてください。 – OOPer
私はまだベータ3を使用していました。それはbeta5でコンパイルされました!ありがとう –