配列のインデックスが範囲外のエラーになってしまい、この質問に遭遇しました。Swift 4では、 'Self'型の値に 'Int'型のインデックスを添字できません。
そして、これはコードのブロックです。
import UIKit
import Foundation
import CoreBluetooth
EDIT 1:レオは示唆したものから、そのエラーが範囲外、このブロックが、インデックスから消えているが、まだ
extension Collection where Index == Int {
func get(index: Int) -> Element? {
if 0 <= index && index < count {
return self[index]
} else {
return nil
}
}
}
class Sample:UIViewController{
.......
//This is where I'm sending data
func send(){
if let send1 = mybytes.get(index: 2){
byteat2 = bytefromtextbox
print(byteat2)
}
}
}
を持続しかし、動作するようには思えません。 私は拡張子のコレクション{にreturn self[index]
でエラーが出る} 私はまた、次のことを試してみました
byteat2.insert(bytefromtextbox!, at:2)
しかし、それは範囲エラー外のインデックスを返してきました。
誰かが助けて解決策を教えてくれますか?
使用アペンドの代わりに挿入。 Btwなぜgetメソッドが必要でしょうか?配列の添え字を使用して、インデックスの値にアクセスしようとする前に配列の数を調べてください –
実際にgetメソッドを実装したい場合は、インデックス 'extended Collection 'に制約を追加してindex == Int {'とし、インデックスが有効かどうかをチェックする 'return indices.contains(index)? self [index]:nil' –
もう一つのオプションは、インデックスパラメータを 'Int'から' Index'に変更することです: 'extension' { func get(index:Index) - > Element? { return indices.contains(index)?自己[index]:nil } } ' –