1. ホーム
  2. ios

[解決済み] Type Has No Subscript Members?

2022-02-15 13:06:09

質問

を実行しようとすると、"Type 'Ship' has no subscript members というエラーが表示されます。

var coor = ship[index]

をやってみた。

var coor = ship?[index] as? Coordinate

しかし、次のエラーが発生しました: "タイプ 'Ship'" の非オプショナル値でオプショナルチェーンを使用することはできません。

以下は、私の Ship クラスがあります。

import Foundation

class Ship: NSObject, NSCoding {

    var shipCoors: [Coordinate]?

    var count: Int {
        var count = 0
        for _ in shipCoors! {
            count++
        }
        return count
    }

    init(shipCoors: [Coordinate]) {
        self.shipCoors = shipCoors
    }

    required init(coder decoder: NSCoder) {
        self.shipCoors = decoder.decodeObjectForKey("shipCoors") as? [Coordinate]
    }

    func encodeWithCoder(coder: NSCoder) {
        coder.encodeObject(shipCoors, forKey: "shipCoors")
    }
}

Coordinate クラスはまた、タイプ NSObject, NSCoding などなど・・・。 オブジェクトを読み込むと、配列の中にあるように見えますが ( NSUserDefaults )? どうしたら取り出せるのでしょうか?

解決方法は?

サブスクリプトを Ship オブジェクトに、オプションの Coordinate :

subscript(index: Int) -> Coordinate? {
    guard let coordinate = shipCoors?[index] else {
        return nil
    }
    return coordinate
}

shipCoors は、次のように宣言されています。 [Coordinate]? (オプションの配列)であることから Ship には配列がありません。 shipCoors . この場合、私は nil しかし、あなたが望むものを代わりに返すことができます。