2016-03-21 29 views
6

は私がエラー「:私はタイプには下付きのメンバーはありませんか?

var coor = ship?[index] as? Coordinate 

を実行しようとしました

var coor = ship[index] 

しかし、私はこのエラーを取得する:私はしようとするタイプの 『船』は何の添字のメンバーを持っていません」を取得オプションのチェーンを使用することはできません「タイプの非オプション値が「船」に関する

ここに私の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)?どのように私はそれらを得るのですか?

+1

'ship.shipCoorsが必要ですか?[インデックス] ' – dan

+0

皆さんありがとう、問題を解決することができました! –

+0

あなたの 'count'プロパティゲッターは' return shipCoors?count? 0'btw。 – dan

答えて

8

Coordinateオプションを返すために、あなたのShipオブジェクトに添字を追加します。ここでは

は添字をカバーし、あなたのクラスにサブスクリプトを追加する方法をドキュメントしています [Coordinate]?(オプションの配列)として宣言されているため、 Shipには shipCoorsという配列はありません。この場合、私は nilを返しますが、代わりにあなたが望むものを返すことができます。

5

はスウィフト3私の場合は

Type '() -> [myObject]' has no subscript members 

で同様の問題を持っていた、それは「)(」関数呼び出しにブラケットを添加しないシンプルなケースでした。学校少年の誤り。

すなわち、以下のコードは、犯人私のコードについてはdataModel.myFunction()

0

で解決

dataModel.myFunction 

た:

func takeN(_ numbers: Int...) -> [Int]{ 
    var intArray : [Int] = [] 
    for n in numbers{ 
     intArray.append[n] 

    } 
    return intArray 
} 

私は次のエラーを得ていた。

error: type '(Int) ->()' has no subscript members intArray.append[n]

関数が添字または[]を使用していないことを意味します。

intArray.append[n] 

の行を変更:

intArray.append(n) 

は、全体の問題を解決します!

関連する問題