1. ホーム
  2. ios

[解決済み] Int 型のインデックスを持つ [AnyObject]? の値を添え字として使用できません。

2022-02-01 13:06:22

質問

を拡張したクラスでの話です。 PFQueryTableViewController と表示され、以下のエラーが発生します。行は、以下のようになります。 PFUser だけです。
なぜキャストできないのでしょうか?これを回避する方法はあるのでしょうか?

というエラーが出ます。

Cannot subscript a value of [AnyObject]? with an index of type Int

...この行のため。

var user2 = self.objects[indexPath.row] as! PFUser

<イグ

解決方法は?

問題なのはキャストではなく self.objects はオプションの配列のようです。 [AnyObject]? .
したがって、添え字を使用してその値の 1 つにアクセスしたい場合は、最初に配列を展開する必要があります。

var user2: PFUser
if let userObject = self.objects?[indexPath.row] {
    user2 = userObject as! PFUser
} else {
    // Handle the case of `self.objects` being `nil`.
}

式は self.objects?[indexPath.row] 任意連鎖 を最初にアンラップします。 self.objects を呼び出した後、その添え字を呼び出します。


Swift 2の時点では、この他に ガード文 :

var user2: PFUser
guard let userObject = self.objects?[indexPath.row] else {
    // Handle the case of `self.objects` being `nil` and exit the current scope.
}
user2 = userObject as! PFUser