teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードを追加しました

2016/12/10 13:20

投稿

ababab
ababab

スコア47

title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,60 @@
25
25
  5:4
26
26
  ```
27
27
  とするにはどうしたらよいでしょうか?
28
- よろしくお願い致します。
28
+ よろしくお願い致します。
29
+
30
+ 追加-----------------------
31
+
32
+ ソートするArray"str2"の中身です
33
+
34
+ ```swift
35
+ var str2: Array<Array<String>> = []
36
+
37
+ // CSV読み込み
38
+ if let csvPath = Bundle.main.path(forResource: "test", ofType: "csv") {
39
+ do {
40
+ var csvString = try NSString(contentsOfFile: csvPath, encoding: String.Encoding.utf8.rawValue) as String
41
+ csvString = csvString.replacingOccurrences(of: "\r\n", with: "")
42
+ let array2:Array = csvString.components(separatedBy: ",")
43
+
44
+ var items2 = [String]()
45
+ array2.enumerated().forEach { (index, value) in
46
+
47
+ items2.append(value)
48
+
49
+ if (index + 1) % 7 == 0{
50
+
51
+ if exist == true{
52
+
53
+ str2.append(items2)
54
+
55
+ items2 = [String]()
56
+ exist = false
57
+
58
+ }else{
59
+ items2 = [String]()
60
+ }
61
+ }
62
+
63
+ }
64
+ } catch {
65
+ // エラー
66
+ }
67
+ }
68
+
69
+ for i in 0...str2.count-1 {
70
+
71
+ if str2[i][5] == "有" {
72
+
73
+ str.append(str2[i])
74
+
75
+ }
76
+ }
77
+
78
+ str2 = str
79
+
80
+ str2.remove(at: 0)
81
+ str2.sort { $1[6] < $0[6] }
82
+
83
+ }
84
+ ```

1

質問文全体を更新しました

2016/12/10 13:20

投稿

ababab
ababab

スコア47

title CHANGED
File without changes
body CHANGED
@@ -5,22 +5,24 @@
5
5
  ```Swift
6
6
  str.sort { $1[5] < $0[5] }
7
7
  ```
8
- と書いているのですが、全部で要素が120個あるうち、40番ソートでき、
8
+ と書いているのですが、String型のため一桁の文字でソートされてしまい
9
- 41番目以降はそれ以降の要素で再度ソートされるようになってしまいます。
10
9
  ```Swift
11
10
  0:50
12
- 1:45
11
+ 1:50
12
+ 2:5
13
+ 3:40
14
+ 4:4
15
+ 5:30
16
+ ```
17
+ となってしまいます。
18
+ これを数字通り
19
+ ```Swift
20
+ 0:50
21
+ 1:50
13
22
  2:40
14
- ...
23
+ 3:30
15
- 40:5
24
+ 4:5
16
- 41:50
17
- 42:50
18
- 43:45
25
+ 5:4
19
26
  ```
20
- のような結果になってしまいます。
21
-
22
- 試しに他のArrayでこのコードを試してみたのですが、
23
- そちらの場合はすべての要素をまとめてソートできていました。
24
-
25
- なぜこのようなってしまでしょうか?
27
+ とするはどしたらよいでしょうか?
26
28
  よろしくお願い致します。