Skip to content

Commit 0fe8577

Browse files
committed
下载列表包括每节课简介
1 parent 343dba3 commit 0fe8577

File tree

2 files changed

+44
-20
lines changed

2 files changed

+44
-20
lines changed

tools/download.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
# Videos
44

5-
1. [Introduction to iOS 11, Xcode 9 and Swift 4](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/c2/81/f1/c281f1aa-3abd-e87e-e16d-7eb0d4b1a5d8/311-6554896743492737986-01_9_25_17_1080p_CS193p_1080p_3mb_cc.m4v)
6-
2. [MVC](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic118/v4/a3/0f/1e/a30f1e6c-66b6-35da-ca51-321d272f0444/309-2503760600607007728-02_9_27_17_CS193p_720p_3mb_cc.m4v)
7-
3. [Swift Programming Language](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/cc/18/4c/cc184cca-aaef-fd8e-e0f0-045e766707c9/319-2557083044702627203-03_10_02_17_prores_CS193p_1080p_3mb_cc.m4v)
8-
4. [More Swift](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/a1/6e/07/a16e07a8-9978-bd09-8f68-e7e76cbf8b32/336-3848977901446740876-04_10_04_17_CS193p_1080p_3mb_cc.m4v)
9-
5. [Drawing](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/9d/97/13/9d9713ce-dc0b-c244-8ba5-1e218babe9fa/317-8878116075149346380-05_10_09_17_prores_CS193p_1080p_3mb_cc.m4v)
10-
6. [Multitouch](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/40/b6/28/40b62847-db9f-bc45-10fd-8026ac4e66e4/321-6728107643679048758-06_10_11_17_CS193p_1080p_3mb_cc.m4v)
11-
7. [Multiple MVCs, Timer, and Animation](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic118/v4/41/40/da/4140da9f-07b3-52b5-c8a3-8e466d2ed444/309-96054835436878188-07_10_16_17_CS193p_1080p_3mb_cc.m4v)
12-
8. [Animation](https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/16/8f/57/168f574f-523a-251d-9c32-22ac7c267ca9/327-7793456677118526749-08_10_18_17_1080p_3mb_cc.m4v)
5+
1. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/c2/81/f1/c281f1aa-3abd-e87e-e16d-7eb0d4b1a5d8/311-6554896743492737986-01_9_25_17_1080p_CS193p_1080p_3mb_cc.m4v">Introduction to iOS 11, Xcode 9 and Swift 4</a></summary>Paul Hegarty provides an overview of the lecture series and introduces the different components in iOS. He concludes with a demo of Concentration Game.</details>
6+
2. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic118/v4/a3/0f/1e/a30f1e6c-66b6-35da-ca51-321d272f0444/309-2503760600607007728-02_9_27_17_CS193p_720p_3mb_cc.m4v">MVC</a></summary>Paul Hegarty explains the Model-View-Controller (MVC) concept. He then continues the Concentration demo: demonstrating the application of MVC to the Concentration Game. </details>
7+
3. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/cc/18/4c/cc184cca-aaef-fd8e-e0f0-045e766707c9/319-2557083044702627203-03_10_02_17_prores_CS193p_1080p_3mb_cc.m4v">Swift Programming Language</a></summary>Paul Hegarty begins with a demonstration of making Concentration's button layout dynamic. He then reviews the first two lectures and continues diving into Swift.</details>
8+
4. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/a1/6e/07/a16e07a8-9978-bd09-8f68-e7e76cbf8b32/336-3848977901446740876-04_10_04_17_CS193p_1080p_3mb_cc.m4v">More Swift</a></summary>Paul Hegarty continues his coverage of Swift. </details>
9+
5. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/9d/97/13/9d9713ce-dc0b-c244-8ba5-1e218babe9fa/317-8878116075149346380-05_10_09_17_prores_CS193p_1080p_3mb_cc.m4v">Drawing</a></summary>Paul Hegarty covers error handling, special types any and anyobject, and casting. He then introduces views.</details>
10+
6. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/40/b6/28/40b62847-db9f-bc45-10fd-8026ac4e66e4/321-6728107643679048758-06_10_11_17_CS193p_1080p_3mb_cc.m4v">Multitouch</a></summary>Paul Hegarty continues his PlayingCard demonstration on views. He then introduces gestures and concludes with a demo on swiping, tapping and pinching.</details>
11+
7. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic118/v4/41/40/da/4140da9f-07b3-52b5-c8a3-8e466d2ed444/309-96054835436878188-07_10_16_17_CS193p_1080p_3mb_cc.m4v">Multiple MVCs, Timer, and Animation</a></summary>Paul Hegarty begins with an explanation of multiple MVCs and demonstrates Theme Chooser in Concentration. He then introduces timer and animation.
12+
</details>
13+
8. <details><summary><a href="https://itunesu-assets.itunes.apple.com/apple-assets-us-std-000001/CobaltPublic128/v4/16/8f/57/168f574f-523a-251d-9c32-22ac7c267ca9/327-7793456677118526749-08_10_18_17_1080p_3mb_cc.m4v">Animation</a></summary>Paul Hegarty continues his coverage of Animation.
14+
</details>
1315

1416
# Slides
1517

tools/main.swift

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ struct Resource: CustomStringConvertible {
3636
let title: String
3737
let type: ResourceType
3838
let url: String
39+
let summary: String?
3940

40-
init(title: String, rawType: String, url: String) {
41+
init(title: String, rawType: String, url: String, summary: String?) {
4142
self.url = url
4243

4344
if rawType.contains("video") {
@@ -67,10 +68,13 @@ struct Resource: CustomStringConvertible {
6768
}
6869
self.index = Int(parts[0])!
6970
self.title = parts[1]
71+
72+
self.summary = summary == title ? nil : summary
7073
}
7174

7275
var description: String {
73-
return "\(index). [\(title)](\(url))"
76+
guard let summary = summary else { return "\(index). [\(title)](\(url))" }
77+
return "\(index). <details><summary><a href=\"\(url)\">\(title)</a></summary>\(summary)</details>"
7478
}
7579
}
7680

@@ -98,35 +102,53 @@ class ParsingDelegate: NSObject, XMLParserDelegate {
98102
var isParsingTitle = false
99103
var type: String?
100104
var url: String?
105+
var summary: String?
106+
var isParsingSummary = false
101107

102108
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
103-
if elementName == "link" {
109+
switch elementName {
110+
case "title":
111+
isParsingTitle = true
112+
case "summary":
113+
isParsingSummary = true
114+
case "link":
104115
type = attributeDict["type"]
105116
url = attributeDict["href"]
106-
} else if elementName == "title" {
107-
isParsingTitle = true
117+
default:
118+
break
108119
}
109120
}
110121

111122
func parser(_ parser: XMLParser, foundCDATA CDATABlock: Data) {
112-
if isParsingTitle {
113-
if let title = String(data: CDATABlock, encoding: .utf8) {
114-
self.title = title
123+
if let cData = String(data: CDATABlock, encoding: .utf8) {
124+
if isParsingTitle {
125+
title = cData
126+
} else if isParsingSummary {
127+
summary = cData
115128
} else {
116-
fatalError("Unable to parse title from \(CDATABlock)")
129+
debugPrint("Ignored CDATA[ \(CDATABlock) ]")
117130
}
131+
} else {
132+
fatalError("Unable to parse CDATA[ \(CDATABlock) ]")
118133
}
119134
}
120135

121136
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
122-
if elementName == "title" {
137+
switch elementName {
138+
case "title":
123139
isParsingTitle = false
124-
} else if elementName == "entry" {
125-
resources.append(Resource(title: title!, rawType: type!, url: url!))
140+
case "summary":
141+
isParsingSummary = false
142+
case "entry":
143+
resources.append(Resource(title: title!, rawType: type!, url: url!, summary: summary))
126144
title = nil
127145
isParsingTitle = false
128146
type = nil
129147
url = nil
148+
summary = nil
149+
isParsingSummary = false
150+
default:
151+
break
130152
}
131153
}
132154

0 commit comments

Comments
 (0)