SwiftUIで配列を昇順に並べ替えて表示する方法について
解決したいこと
Swift初心者です。
Swiftの勉強で、.sort()を使用して配列を昇順に並べ替え、任意の要素を取り出してTextビューで表示しようとしたところ以下のエラーが発生しました。
具体的には、
var body: some View {} の中で、
newarray1(以下ソースコードで宣言している配列の名称)に対し、filterメソッドを使用しTextビューで表示することには成功したのですが、
newarray2(以下ソースコードで宣言している配列の名称)に対し、sortメソッドを使用しTextビューで表示しようとしたところ、うまくいきませんでした。
前者はうまくいくのに、後者がうまくいかない理由がよく分かりません。
var body: some View {} の中では、ビューの制御に関すること以外(ただの四則演算など)ができないことは、なんとなく分かっているのですが、Viewプロトコルに関する理解が浅く、問題解決できずにいます。
解決方法のご教授、よろしくお願いします。
発生している問題・エラー1
let newarray2 = testarray2.sort() の部分で、以下の警告文が出ています
Constant 'newarray2' inferred to have type '()', which may be unexpected
発生している問題・エラー2
Text("(newarray2[0])") の部分で、以下のエラー文が出ています
Value of type '()' has no subscripts
該当するソースコード
//Xcodeのバージョン Version 12.3 (12C33)
//Swiftのバージョン Apple Swift version 5.3.2
import SwiftUI
var testarray1: [String] = ["a", "bb", "ccc", "dddd", "eeeee", "ffffff"]
var testarray2: [String] = ["c", "a", "d", "b", "e", "f"]
struct ContentView: View {
var body: some View {
//うまく表示できた--------------------------------------
//配列内の条件にあう要素だけ抽出(文字数が5文字よりも多いもの)
let newarray1 = testarray1.filter{ $0.count > 5}
Text("\(newarray1[0])")
//----------------------------------------------------
//うまく表示できなかった----------------------------------
let newarray2 = testarray2.sort() //昇順にソート
Text("\(newarray2[0])")
//----------------------------------------------------
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}