diff --git a/Chapter2/Session2.playground/Contents.swift b/Chapter2/Session2.playground/Contents.swift
index daf3d6f..16a22c4 100644
--- a/Chapter2/Session2.playground/Contents.swift
+++ b/Chapter2/Session2.playground/Contents.swift
@@ -17,8 +17,7 @@ let name:String = "Seongkwan"
var greeting = "Hello"
greeting += " " + name
-let characters = name.characters
-let count = characters.count
+let count = name.count
let url = "www.codershigh.com"
let hasProtocol:Bool = url.hasPrefix("http://")
@@ -94,7 +93,7 @@ roomCapacity["Kahlo"]
let roomNames = [String](roomCapacity.keys)
let capacities = [Int](roomCapacity.values)
-let total = capacities.reduce(0, combine: +)
+let total = capacities.reduce(0, +)
//: Session 2-6 컬렉션2 Set
let subway2 :Set = ["시청", "을지로입구", "을지로3가", "을지로4가","동대문역사문화공원", "신당", "상왕십리", "왕십리", "한양대", "뚝섬", "성수", "건대입구", "구의", "강변", "잠실나루", "잠실", "신천", "종합운동장", "삼성", "선릉", "역삼", "강남", "교대", "서초", "방배", "사당", "낙성대", "서울대입구", "봉천", "신림", "신대방", "구로디지털단지", "대림", "신도림", "문래", "영등포구청", "당산", "합정", "홍대입구", "신촌", "이대", "아현", "충정로"]
@@ -103,14 +102,14 @@ subway2.count
let subway3 :Set = ["지축", "구파발", "연신내", "불광", "녹번", "홍제", "무악재", "독립문", "경복궁", "안국", "종로3가", "을지로3가", "충무로", "동대입구", "약수", "금호", "옥수", "압구정", "신사", "잠원", "고속터미널", "교대", "남부터미널", "양재", "매봉", "도곡", "대치", "학여울", "대청", "일원", "수서", "가락시장", "경찰병원", "오금"]
subway3.count
-let transfer = subway2.intersect(subway3)
+let transfer = subway2.intersection(subway3)
transfer.count
-let notTransfer = subway2.subtract(subway3)
+let notTransfer = subway2.subtracting(subway3)
notTransfer.count
let union = subway2.union(subway3)
union.count
-let exOR = subway2.exclusiveOr(subway3)
+let exOR = subway2.symmetricDifference(subway3)
exOR.count
if transfer.count > 0 {
@@ -206,7 +205,7 @@ func ratingRecord (history:[Double]) -> (average:Double, min:Double, max:Double)
ratings = [3.5, 2.0, 4.5, 5.0]
bookDescription = "\(title)"
-if let theRatings = ratings , record = ratingRecord(theRatings) {
+if let theRatings = ratings , let record = ratingRecord(history: theRatings) {
bookDescription += " has \(theRatings.count) ratings, \r\n average is \(record.average), from \(record.min) to \(record.max)"
} else {
bookDescription += " has no ratings yet"
@@ -216,48 +215,48 @@ if let theRatings = ratings , record = ratingRecord(theRatings) {
bookDescription
/*
-1. record의 Type을 명시하시오
-2. ratings = [] 일때 문제 해결 방식 고민
-*/
+ 1. record의 Type을 명시하시오
+ 2. ratings = [] 일때 문제 해결 방식 고민
+ */
//: Session 2-12 Structure
_={
-
-struct Task {
- var title:String//?
- var time:Int?
-}
-
-var callTask = Task(title: "Call to Randy", time: 10*60)
-//var reportTask = Task()
-var reportTask = Task(title:"Report to Boss", time: nil)
-
-var todayTask:[Task] = []
-todayTask += [callTask, reportTask]
-todayTask[1].time = 15*60
-
-callTask.title = "Call to Toby"
-print("today task = \(todayTask) \r\n callTask = \(callTask)")
+
+ struct Task {
+ var title:String//?
+ var time:Int?
+ }
+
+ var callTask = Task(title: "Call to Randy", time: 10*60)
+ //var reportTask = Task()
+ let reportTask = Task(title:"Report to Boss", time: nil)
+
+ var todayTask:[Task] = []
+ todayTask += [callTask, reportTask]
+ todayTask[1].time = 15*60
+
+ callTask.title = "Call to Toby"
+ print("today task = \(todayTask) \r\n callTask = \(callTask)")
}
//: Session 2-13 Class
_={
-class Employee {
- var name:String?
- var phoneNumber:String?
- var boss:Employee?
-}
-
-struct Task {
- var title:String
- var time:Int?
+ class Employee {
+ var name:String?
+ var phoneNumber:String?
+ var boss:Employee?
+ }
+
+ struct Task {
+ var title:String
+ var time:Int?
+
+ var owner:Employee
+ var participant:Employee?
+ }
- var owner:Employee
- var participant:Employee?
-}
-
let me:Employee = Employee()
me.name = "Alex"
me.phoneNumber = "010-1234-5678"
@@ -266,8 +265,8 @@ struct Task {
toby.name = "Toby"
toby.phoneNumber = "011-5678-1234"
- var callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby)
- var reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil)
+ let callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby)
+ let reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil)
callTask.participant?.phoneNumber = "010-5678-1234"
var todayTask:[Task] = []
@@ -327,8 +326,8 @@ _={
toby.name = "Toby"
toby.phoneNumber = "011-5678-1234"
- var callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby, type:.Call)
- var reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil, type:Task.TaskType.Report)
+ let callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby, type:.Call)
+ let reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil, type:Task.TaskType.Report)
callTask.participant?.phoneNumber = "010-5678-1234"
@@ -404,7 +403,7 @@ _={
var callTask = Task(type:.Call, owner:me)
callTask.time = 10*60
- var reportTask = Task(type:.Report, owner:me)
+ let reportTask = Task(type:.Report, owner:me)
callTask.participant?.phoneNumber = "010-5678-1234"
@@ -431,15 +430,15 @@ _={
func report() {
if let myBoss = boss {
- print("\(self.name) reported to \(myBoss.name)")
+ print("\(String(describing: self.name)) reported to \(String(describing: myBoss.name))")
} else {
- print("\(name) don't have boss")
+ print("\(String(describing: name)) don't have boss")
}
}
func callTaskToBoss() -> Task? {
- if let myBoss = boss, callTo = myBoss.phoneNumber {
- var callTask = Task(type: .Call, owner: self)
+ if let myBoss = boss, let _ = myBoss.phoneNumber {
+ let callTask = Task(type: .Call, owner: self)
return callTask
}
return nil
@@ -498,9 +497,9 @@ _={
me.boss = toby
me.report()
- var reportTask = Task(type:.Report, owner:me)
+ let reportTask = Task(type:.Report, owner:me)
todayTask += [reportTask]
-
+
if let callTask = me.callTaskToBoss() {
todayTask += [callTask]
}
@@ -532,15 +531,15 @@ _={
func report() {
if let myBoss = boss {
- print("\(self.name) reported to \(myBoss.name)")
+ print("\(String(describing: self.name)) reported to \(String(describing: myBoss.name))")
} else {
- print("\(name) don't have boss")
+ print("\(String(describing: name)) don't have boss")
}
}
func callTaskToBoss() -> Task? {
- if let myBoss = boss, callTo = myBoss.phoneNumber {
- var callTask = Task(type: .Call(number:callTo), owner: self)
+ if let myBoss = boss, let callTo = myBoss.phoneNumber {
+ let callTask = Task(type: .Call(number:callTo), owner: self)
return callTask
}
return nil
@@ -592,15 +591,13 @@ _={
let taskDescription:String
switch type {
case .Call(let number) :
- taskDescription = "\(owner.name) make a call to \(number)"
+ taskDescription = "\(String(describing: owner.name)) make a call to \(number)"
case .Report(let receiver, let time) :
- taskDescription = "\(owner.name) report to \(receiver.name) at \(time)"
+ taskDescription = "\(String(describing: owner.name)) report to \(String(describing: receiver.name)) at \(time)"
case .Meet(let participant, let location) :
- taskDescription = "\(owner.name) meet \(participant.name) at \(location)"
+ taskDescription = "\(String(describing: owner.name)) meet \(String(describing: participant.name)) at \(location)"
case .Support(let taskOwner, let duration) :
- taskDescription = "\(owner.name) support \(taskOwner.name) for \(duration) days"
- default:
- taskDescription = "Need more information for task."
+ taskDescription = "\(String(describing: owner.name)) support \(String(describing: taskOwner.name)) for \(duration) days"
}
return taskDescription
}
@@ -616,7 +613,7 @@ _={
me.boss = toby
me.report()
- var reportTask = Task(type:.Report(to:toby, when:"Afternoon"), owner:me)
+ let reportTask = Task(type:.Report(to:toby, when:"Afternoon"), owner:me)
todayTask += [reportTask]
if let callTask = me.callTaskToBoss() {
@@ -627,3 +624,4 @@ _={
reportTask.doBasicTask()
}
+
diff --git a/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata b/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/Chapter2/Session2.playground/playground.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Chapter2/Session2.playground/timeline.xctimeline b/Chapter2/Session2.playground/timeline.xctimeline
index 2eeb328..0e03f61 100644
--- a/Chapter2/Session2.playground/timeline.xctimeline
+++ b/Chapter2/Session2.playground/timeline.xctimeline
@@ -3,39 +3,39 @@
version = "3.0">
diff --git a/Chapter5/SwiftFunctionType.playground/Contents.swift b/Chapter5/SwiftFunctionType.playground/Contents.swift
index 9222f30..f8eee47 100644
--- a/Chapter5/SwiftFunctionType.playground/Contents.swift
+++ b/Chapter5/SwiftFunctionType.playground/Contents.swift
@@ -4,11 +4,11 @@ import UIKit
//: Session 5-1 Function Types
-/*func addVAT(source:Double) -> Double {
+func addVAT(_ source:Double) -> Double {
return source * 1.1
-}*/
+}
-func couponDiscount(source:Double) -> Double {
+func couponDiscount(_ source:Double) -> Double {
return source * 0.9
}
@@ -27,7 +27,7 @@ func finalPrice(source:Double, additional:(Double) -> Double) -> Double {
return price
}
-let price3220 = finalPrice(350.0, additional: couponDiscount)
+let price3220 = finalPrice(source: 350.0, additional: couponDiscount)
//: Session 5-2 Closure
@@ -71,7 +71,7 @@ let price3221 = addVATClosure4(157.6)
return adder
}*/
-func makeAdder(x:Int) -> Int -> Int {
+func makeAdder(_ x:Int) -> (Int) -> Int {
return {
return $0 + x;
}
@@ -89,9 +89,9 @@ print(makeAdder(5)(2))
//: Session 5-6 map
let transactions = [560.0, 321.5, 190.0, 672.8, 1190.0, 450.0]
-func addVAT(source:Double) -> Double {
- return source * 1.1
-}
+//func addVAT(source:Double) -> Double {
+// return source * 1.1
+//}
var vatPrices:[Double] = []
for transaction in transactions {
@@ -128,21 +128,21 @@ func ascendantSort (sort1:Double, sort2:Double) -> Bool {
return sort1 > sort2
}
-let sortedPrices = vatPrices.sort(ascendantSort)
-let sortedPrices2 = vatPrices.sort({ sort1, sort2 in
+let sortedPrices = vatPrices.sorted(by: ascendantSort)
+let sortedPrices2 = vatPrices.sorted(by: { sort1, sort2 in
return sort1 > sort2
})
-let sortedPrices3 = vatPrices.sort({ $0 > $1 })
-let sortedPrices4 = vatPrices.sort( > )
+let sortedPrices3 = vatPrices.sorted(by: { $0 > $1 })
+let sortedPrices4 = vatPrices.sorted(by: > )
-let sortedMeetingRooms = meetingRooms.sort({$0.1 > $1.1})
+let sortedMeetingRooms = meetingRooms.sorted(by: {$0.1 > $1.1})
print("\(sortedMeetingRooms)")
//: Session 5-9 reduce
-func priceSum (base:Double, adder:Double) -> Double {
+func priceSum (_ base:Double, adder:Double) -> Double {
return base + adder
}
@@ -154,19 +154,19 @@ for price in vatPrices {
print("\(sum)")
var sum2:Double = 0.0
-let sumReduce = vatPrices.reduce(sum2, combine: priceSum)
-let sumReduce2 = vatPrices.reduce(0.0, combine: { base, adder in
+let sumReduce = vatPrices.reduce(sum2, priceSum)
+let sumReduce2 = vatPrices.reduce(0.0, { base, adder in
base + adder
})
-let sumReduce3 = vatPrices.reduce(0, combine: +)
+let sumReduce3 = vatPrices.reduce(0, +)
-let pricesInString = vatPrices.reduce("", combine:{$0 + "\($1)\n"})
+let pricesInString = vatPrices.reduce("", {$0 + "\($1)\n"})
print(pricesInString)
-let descriptionString = meetingRooms.reduce("We have meeting rooms : \n", combine: { $0 + "\($1.0) for \($1.1) person \n"
+let descriptionString = meetingRooms.reduce("We have meeting rooms : \n", { $0 + "\($1.0) for \($1.1) person \n"
})
@@ -183,9 +183,13 @@ print(descriptionString)
-let x = [10, 3, 20, 15, 4].sort {$0 < $1}.filter { $0 > 5 }.map { $0 * 100 }
+//let x = [10, 3, 20, 15, 4].sorted {$0 < $1}.filter { $0 > 5 }.map { $0 * 100 }
+// Expression was too complex to be solved in reasonable time Error in my laptop
+let sorted = [10, 3, 20, 15, 4].sorted { $0 < $1 }
+let filtered = sorted.filter { $0 > 5 }
+let map = filtered.map { $0 * 100 }
-let x2 = [10, 3, 20, 15, 4].sort {$0 < $1}
+let x2 = [10, 3, 20, 15, 4].sorted {$0 < $1}
x2
diff --git a/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata b/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/Chapter5/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Chapter5/SwiftFunctionType.playground/timeline.xctimeline b/Chapter5/SwiftFunctionType.playground/timeline.xctimeline
index 6cdf29c..4df0018 100644
--- a/Chapter5/SwiftFunctionType.playground/timeline.xctimeline
+++ b/Chapter5/SwiftFunctionType.playground/timeline.xctimeline
@@ -3,12 +3,12 @@
version = "3.0">
diff --git a/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj
index 59c41e5..51ec3e7 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj
+++ b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj
@@ -3,29 +3,68 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
- 2C6EF0961C2AB6D8002398BD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */; };
- 2C6EF0981C2AB6D8002398BD /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6EF0971C2AB6D8002398BD /* ViewController.swift */; };
- 2C6EF09B1C2AB6D8002398BD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF0991C2AB6D8002398BD /* Main.storyboard */; };
- 2C6EF09D1C2AB6D8002398BD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */; };
- 2C6EF0A01C2AB6D8002398BD /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */; };
+ B2508AD71FB07AB600642C34 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508AD61FB07AB600642C34 /* AppDelegate.swift */; };
+ B2508AD91FB07AB600642C34 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508AD81FB07AB600642C34 /* ViewController.swift */; };
+ B2508ADC1FB07AB600642C34 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2508ADA1FB07AB600642C34 /* Main.storyboard */; };
+ B2508ADE1FB07AB600642C34 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2508ADD1FB07AB600642C34 /* Assets.xcassets */; };
+ B2508AE11FB07AB600642C34 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2508ADF1FB07AB600642C34 /* LaunchScreen.storyboard */; };
+ B2508AEC1FB07AB700642C34 /* MeetingRoomsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508AEB1FB07AB700642C34 /* MeetingRoomsTests.swift */; };
+ B2508AF71FB07AB700642C34 /* MeetingRoomsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508AF61FB07AB700642C34 /* MeetingRoomsUITests.swift */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ B2508AE81FB07AB600642C34 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2508ACB1FB07AB600642C34 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2508AD21FB07AB600642C34;
+ remoteInfo = MeetingRooms;
+ };
+ B2508AF31FB07AB700642C34 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2508ACB1FB07AB600642C34 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2508AD21FB07AB600642C34;
+ remoteInfo = MeetingRooms;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXFileReference section */
- 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRooms.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 2C6EF0971C2AB6D8002398BD /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 2C6EF09A1C2AB6D8002398BD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 2C6EF09F1C2AB6D8002398BD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 2C6EF0A11C2AB6D8002398BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508AD31FB07AB600642C34 /* MeetingRooms.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRooms.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508AD61FB07AB600642C34 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ B2508AD81FB07AB600642C34 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ B2508ADB1FB07AB600642C34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ B2508ADD1FB07AB600642C34 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ B2508AE01FB07AB600642C34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ B2508AE21FB07AB600642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508AE71FB07AB600642C34 /* MeetingRoomsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MeetingRoomsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508AEB1FB07AB700642C34 /* MeetingRoomsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomsTests.swift; sourceTree = ""; };
+ B2508AED1FB07AB700642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508AF21FB07AB700642C34 /* MeetingRoomsUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MeetingRoomsUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508AF61FB07AB700642C34 /* MeetingRoomsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomsUITests.swift; sourceTree = ""; };
+ B2508AF81FB07AB700642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 2C6EF08F1C2AB6D7002398BD /* Frameworks */ = {
+ B2508AD01FB07AB600642C34 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AE41FB07AB600642C34 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AEF1FB07AB700642C34 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -35,45 +74,67 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 2C6EF0891C2AB6D7002398BD = {
+ B2508ACA1FB07AB600642C34 = {
isa = PBXGroup;
children = (
- 2C6EF0941C2AB6D7002398BD /* MeetingRooms */,
- 2C6EF0931C2AB6D7002398BD /* Products */,
+ B2508AD51FB07AB600642C34 /* MeetingRooms */,
+ B2508AEA1FB07AB700642C34 /* MeetingRoomsTests */,
+ B2508AF51FB07AB700642C34 /* MeetingRoomsUITests */,
+ B2508AD41FB07AB600642C34 /* Products */,
);
sourceTree = "";
};
- 2C6EF0931C2AB6D7002398BD /* Products */ = {
+ B2508AD41FB07AB600642C34 /* Products */ = {
isa = PBXGroup;
children = (
- 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */,
+ B2508AD31FB07AB600642C34 /* MeetingRooms.app */,
+ B2508AE71FB07AB600642C34 /* MeetingRoomsTests.xctest */,
+ B2508AF21FB07AB700642C34 /* MeetingRoomsUITests.xctest */,
);
name = Products;
sourceTree = "";
};
- 2C6EF0941C2AB6D7002398BD /* MeetingRooms */ = {
+ B2508AD51FB07AB600642C34 /* MeetingRooms */ = {
isa = PBXGroup;
children = (
- 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */,
- 2C6EF0971C2AB6D8002398BD /* ViewController.swift */,
- 2C6EF0991C2AB6D8002398BD /* Main.storyboard */,
- 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */,
- 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */,
- 2C6EF0A11C2AB6D8002398BD /* Info.plist */,
+ B2508AD61FB07AB600642C34 /* AppDelegate.swift */,
+ B2508AD81FB07AB600642C34 /* ViewController.swift */,
+ B2508ADA1FB07AB600642C34 /* Main.storyboard */,
+ B2508ADD1FB07AB600642C34 /* Assets.xcassets */,
+ B2508ADF1FB07AB600642C34 /* LaunchScreen.storyboard */,
+ B2508AE21FB07AB600642C34 /* Info.plist */,
);
path = MeetingRooms;
sourceTree = "";
};
+ B2508AEA1FB07AB700642C34 /* MeetingRoomsTests */ = {
+ isa = PBXGroup;
+ children = (
+ B2508AEB1FB07AB700642C34 /* MeetingRoomsTests.swift */,
+ B2508AED1FB07AB700642C34 /* Info.plist */,
+ );
+ path = MeetingRoomsTests;
+ sourceTree = "";
+ };
+ B2508AF51FB07AB700642C34 /* MeetingRoomsUITests */ = {
+ isa = PBXGroup;
+ children = (
+ B2508AF61FB07AB700642C34 /* MeetingRoomsUITests.swift */,
+ B2508AF81FB07AB700642C34 /* Info.plist */,
+ );
+ path = MeetingRoomsUITests;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 2C6EF0911C2AB6D7002398BD /* MeetingRooms */ = {
+ B2508AD21FB07AB600642C34 /* MeetingRooms */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 2C6EF0A41C2AB6D8002398BD /* Build configuration list for PBXNativeTarget "MeetingRooms" */;
+ buildConfigurationList = B2508AFB1FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRooms" */;
buildPhases = (
- 2C6EF08E1C2AB6D7002398BD /* Sources */,
- 2C6EF08F1C2AB6D7002398BD /* Frameworks */,
- 2C6EF0901C2AB6D7002398BD /* Resources */,
+ B2508ACF1FB07AB600642C34 /* Sources */,
+ B2508AD01FB07AB600642C34 /* Frameworks */,
+ B2508AD11FB07AB600642C34 /* Resources */,
);
buildRules = (
);
@@ -81,80 +142,172 @@
);
name = MeetingRooms;
productName = MeetingRooms;
- productReference = 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */;
+ productReference = B2508AD31FB07AB600642C34 /* MeetingRooms.app */;
productType = "com.apple.product-type.application";
};
+ B2508AE61FB07AB600642C34 /* MeetingRoomsTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2508AFE1FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsTests" */;
+ buildPhases = (
+ B2508AE31FB07AB600642C34 /* Sources */,
+ B2508AE41FB07AB600642C34 /* Frameworks */,
+ B2508AE51FB07AB600642C34 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2508AE91FB07AB600642C34 /* PBXTargetDependency */,
+ );
+ name = MeetingRoomsTests;
+ productName = MeetingRoomsTests;
+ productReference = B2508AE71FB07AB600642C34 /* MeetingRoomsTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ B2508AF11FB07AB700642C34 /* MeetingRoomsUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2508B011FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsUITests" */;
+ buildPhases = (
+ B2508AEE1FB07AB700642C34 /* Sources */,
+ B2508AEF1FB07AB700642C34 /* Frameworks */,
+ B2508AF01FB07AB700642C34 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2508AF41FB07AB700642C34 /* PBXTargetDependency */,
+ );
+ name = MeetingRoomsUITests;
+ productName = MeetingRoomsUITests;
+ productReference = B2508AF21FB07AB700642C34 /* MeetingRoomsUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
- 2C6EF08A1C2AB6D7002398BD /* Project object */ = {
+ B2508ACB1FB07AB600642C34 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastSwiftUpdateCheck = 0710;
- LastUpgradeCheck = 0710;
- ORGANIZATIONNAME = CodersHigh;
+ LastSwiftUpdateCheck = 0910;
+ LastUpgradeCheck = 0910;
+ ORGANIZATIONNAME = Gompu;
TargetAttributes = {
- 2C6EF0911C2AB6D7002398BD = {
- CreatedOnToolsVersion = 7.1;
+ B2508AD21FB07AB600642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ };
+ B2508AE61FB07AB600642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2508AD21FB07AB600642C34;
+ };
+ B2508AF11FB07AB700642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2508AD21FB07AB600642C34;
};
};
};
- buildConfigurationList = 2C6EF08D1C2AB6D7002398BD /* Build configuration list for PBXProject "MeetingRooms" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ buildConfigurationList = B2508ACE1FB07AB600642C34 /* Build configuration list for PBXProject "MeetingRooms" */;
+ compatibilityVersion = "Xcode 8.0";
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
- mainGroup = 2C6EF0891C2AB6D7002398BD;
- productRefGroup = 2C6EF0931C2AB6D7002398BD /* Products */;
+ mainGroup = B2508ACA1FB07AB600642C34;
+ productRefGroup = B2508AD41FB07AB600642C34 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
- 2C6EF0911C2AB6D7002398BD /* MeetingRooms */,
+ B2508AD21FB07AB600642C34 /* MeetingRooms */,
+ B2508AE61FB07AB600642C34 /* MeetingRoomsTests */,
+ B2508AF11FB07AB700642C34 /* MeetingRoomsUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 2C6EF0901C2AB6D7002398BD /* Resources */ = {
+ B2508AD11FB07AB600642C34 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2508AE11FB07AB600642C34 /* LaunchScreen.storyboard in Resources */,
+ B2508ADE1FB07AB600642C34 /* Assets.xcassets in Resources */,
+ B2508ADC1FB07AB600642C34 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AE51FB07AB600642C34 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AF01FB07AB700642C34 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2C6EF0A01C2AB6D8002398BD /* LaunchScreen.storyboard in Resources */,
- 2C6EF09D1C2AB6D8002398BD /* Assets.xcassets in Resources */,
- 2C6EF09B1C2AB6D8002398BD /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 2C6EF08E1C2AB6D7002398BD /* Sources */ = {
+ B2508ACF1FB07AB600642C34 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2C6EF0981C2AB6D8002398BD /* ViewController.swift in Sources */,
- 2C6EF0961C2AB6D8002398BD /* AppDelegate.swift in Sources */,
+ B2508AD91FB07AB600642C34 /* ViewController.swift in Sources */,
+ B2508AD71FB07AB600642C34 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AE31FB07AB600642C34 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2508AEC1FB07AB700642C34 /* MeetingRoomsTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508AEE1FB07AB700642C34 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2508AF71FB07AB700642C34 /* MeetingRoomsUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ B2508AE91FB07AB600642C34 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2508AD21FB07AB600642C34 /* MeetingRooms */;
+ targetProxy = B2508AE81FB07AB600642C34 /* PBXContainerItemProxy */;
+ };
+ B2508AF41FB07AB700642C34 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2508AD21FB07AB600642C34 /* MeetingRooms */;
+ targetProxy = B2508AF31FB07AB700642C34 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
- 2C6EF0991C2AB6D8002398BD /* Main.storyboard */ = {
+ B2508ADA1FB07AB600642C34 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C6EF09A1C2AB6D8002398BD /* Base */,
+ B2508ADB1FB07AB600642C34 /* Base */,
);
name = Main.storyboard;
sourceTree = "";
};
- 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */ = {
+ B2508ADF1FB07AB600642C34 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C6EF09F1C2AB6D8002398BD /* Base */,
+ B2508AE01FB07AB600642C34 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "";
@@ -162,29 +315,41 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
- 2C6EF0A21C2AB6D8002398BD /* Debug */ = {
+ B2508AF91FB07AB700642C34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -198,38 +363,50 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C6EF0A31C2AB6D8002398BD /* Release */ = {
+ B2508AFA1FB07AB700642C34 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
@@ -237,57 +414,144 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
- 2C6EF0A51C2AB6D8002398BD /* Debug */ = {
+ B2508AFC1FB07AB700642C34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MeetingRooms/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRooms;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRooms;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C6EF0A61C2AB6D8002398BD /* Release */ = {
+ B2508AFD1FB07AB700642C34 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MeetingRooms/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRooms;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRooms;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ B2508AFF1FB07AB700642C34 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MeetingRooms.app/MeetingRooms";
+ };
+ name = Debug;
+ };
+ B2508B001FB07AB700642C34 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MeetingRooms.app/MeetingRooms";
+ };
+ name = Release;
+ };
+ B2508B021FB07AB700642C34 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MeetingRooms;
+ };
+ name = Debug;
+ };
+ B2508B031FB07AB700642C34 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MeetingRooms;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 2C6EF08D1C2AB6D7002398BD /* Build configuration list for PBXProject "MeetingRooms" */ = {
+ B2508ACE1FB07AB600642C34 /* Build configuration list for PBXProject "MeetingRooms" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2508AF91FB07AB700642C34 /* Debug */,
+ B2508AFA1FB07AB700642C34 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2508AFB1FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRooms" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C6EF0A21C2AB6D8002398BD /* Debug */,
- 2C6EF0A31C2AB6D8002398BD /* Release */,
+ B2508AFC1FB07AB700642C34 /* Debug */,
+ B2508AFD1FB07AB700642C34 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 2C6EF0A41C2AB6D8002398BD /* Build configuration list for PBXNativeTarget "MeetingRooms" */ = {
+ B2508AFE1FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C6EF0A51C2AB6D8002398BD /* Debug */,
- 2C6EF0A61C2AB6D8002398BD /* Release */,
+ B2508AFF1FB07AB700642C34 /* Debug */,
+ B2508B001FB07AB700642C34 /* Release */,
);
defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2508B011FB07AB700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsUITests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2508B021FB07AB700642C34 /* Debug */,
+ B2508B031FB07AB700642C34 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
- rootObject = 2C6EF08A1C2AB6D7002398BD /* Project object */;
+ rootObject = B2508ACB1FB07AB600642C34 /* Project object */;
}
diff --git a/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..ff41f19
--- /dev/null
+++ b/SampleCodes/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/AppDelegate.swift b/SampleCodes/MeetingRooms/MeetingRooms/AppDelegate.swift
index 22c3a0d..5d9393d 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/AppDelegate.swift
+++ b/SampleCodes/MeetingRooms/MeetingRooms/AppDelegate.swift
@@ -2,8 +2,8 @@
// AppDelegate.swift
// MeetingRooms
//
-// Created by Lingostar on 2015. 12. 23..
-// Copyright © 2015년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
@@ -14,30 +14,30 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
- func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
- func applicationWillResignActive(application: UIApplication) {
+ func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
- func applicationDidEnterBackground(application: UIApplication) {
+ func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- func applicationWillEnterForeground(application: UIApplication) {
- // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
- func applicationDidBecomeActive(application: UIApplication) {
+ func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- func applicationWillTerminate(application: UIApplication) {
+ func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg b/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg
deleted file mode 100644
index 829e21b..0000000
Binary files a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg and /dev/null differ
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/Contents.json b/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/Contents.json
deleted file mode 100644
index b0283d5..0000000
--- a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "4347286612_11577182f1_o.jpg",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json b/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json
index 36d2c80..1d060ed 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,5 +1,15 @@
{
"images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
{
"idiom" : "iphone",
"size" : "29x29",
@@ -30,6 +40,16 @@
"size" : "60x60",
"scale" : "3x"
},
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
{
"idiom" : "ipad",
"size" : "29x29",
@@ -59,6 +79,11 @@
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
}
],
"info" : {
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/Contents.json b/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/Contents.json
deleted file mode 100644
index da4a164..0000000
--- a/SampleCodes/MeetingRooms/MeetingRooms/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard
index 2e721e1..f83f6fd 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard
+++ b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard
@@ -1,22 +1,20 @@
-
+
-
+
+
+
-
-
-
-
-
+
-
-
+
+
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard
index eae1517..2116112 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard
+++ b/SampleCodes/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard
@@ -1,267 +1,261 @@
-
-
+
+
+
+
+
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
-
-
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
+
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
-
-
+
-
+
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/Info.plist b/SampleCodes/MeetingRooms/MeetingRooms/Info.plist
index 40c6215..16be3b6 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/Info.plist
+++ b/SampleCodes/MeetingRooms/MeetingRooms/Info.plist
@@ -3,7 +3,7 @@
CFBundleDevelopmentRegion
- en
+ $(DEVELOPMENT_LANGUAGE)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -16,8 +16,6 @@
APPL
CFBundleShortVersionString
1.0
- CFBundleSignature
- ????
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/SampleCodes/MeetingRooms/MeetingRooms/ViewController.swift b/SampleCodes/MeetingRooms/MeetingRooms/ViewController.swift
index 435714c..84af176 100644
--- a/SampleCodes/MeetingRooms/MeetingRooms/ViewController.swift
+++ b/SampleCodes/MeetingRooms/MeetingRooms/ViewController.swift
@@ -2,8 +2,8 @@
// ViewController.swift
// MeetingRooms
//
-// Created by Lingostar on 2015. 12. 23..
-// Copyright © 2015년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
diff --git a/SampleCodes/MeetingRooms/MeetingRoomsTests/Info.plist b/SampleCodes/MeetingRooms/MeetingRoomsTests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MeetingRooms/MeetingRoomsTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MeetingRooms/MeetingRoomsTests/MeetingRoomsTests.swift b/SampleCodes/MeetingRooms/MeetingRoomsTests/MeetingRoomsTests.swift
new file mode 100644
index 0000000..2ab7e50
--- /dev/null
+++ b/SampleCodes/MeetingRooms/MeetingRoomsTests/MeetingRoomsTests.swift
@@ -0,0 +1,36 @@
+//
+// MeetingRoomsTests.swift
+// MeetingRoomsTests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+@testable import MeetingRooms
+
+class MeetingRoomsTests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+ func testPerformanceExample() {
+ // This is an example of a performance test case.
+ self.measure {
+ // Put the code you want to measure the time of here.
+ }
+ }
+
+}
diff --git a/SampleCodes/MeetingRooms/MeetingRoomsUITests/Info.plist b/SampleCodes/MeetingRooms/MeetingRoomsUITests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MeetingRooms/MeetingRoomsUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MeetingRooms/MeetingRoomsUITests/MeetingRoomsUITests.swift b/SampleCodes/MeetingRooms/MeetingRoomsUITests/MeetingRoomsUITests.swift
new file mode 100644
index 0000000..063cb59
--- /dev/null
+++ b/SampleCodes/MeetingRooms/MeetingRoomsUITests/MeetingRoomsUITests.swift
@@ -0,0 +1,36 @@
+//
+// MeetingRoomsUITests.swift
+// MeetingRoomsUITests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+
+class MeetingRoomsUITests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ continueAfterFailure = false
+ // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
+ XCUIApplication().launch()
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj
index cd8935e..22fd555 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj
@@ -3,47 +3,88 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
- 2C1A2E7B1CC7603D0069EEED /* TintColorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */; };
- 2C5B2DA81CC71E8D007D75DD /* EquipmentsDefault.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */; };
- 2C5B2DAA1CC726B8007D75DD /* EquipmentsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */; };
- 2C6F67101CC233F5007EAEC7 /* RoomInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */; };
- 2C6F67121CC342F3007EAEC7 /* ReservationListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */; };
- 2C6F67141CC34BDF007EAEC7 /* ReserveRoomViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */; };
- 2C9C276A1C958848002525E4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9C27691C958848002525E4 /* AppDelegate.swift */; };
- 2C9C276F1C958848002525E4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C276D1C958848002525E4 /* Main.storyboard */; };
- 2C9C27711C958849002525E4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C27701C958849002525E4 /* Assets.xcassets */; };
- 2C9C27741C958849002525E4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */; };
- 2C9C277C1C9588BE002525E4 /* MeetingRoomsListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */; };
- 2CAA1EF41CB3F36D0096F3FA /* DataCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */; };
- 2CAA1EF61CB3FA630096F3FA /* BranchListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */; };
- 2CAA1EF81CB3FA7C0096F3FA /* ServiceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */; };
+ B2508B111FB07D7600642C34 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508B101FB07D7600642C34 /* AppDelegate.swift */; };
+ B2508B131FB07D7600642C34 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508B121FB07D7600642C34 /* ViewController.swift */; };
+ B2508B161FB07D7700642C34 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2508B141FB07D7700642C34 /* Main.storyboard */; };
+ B2508B181FB07D7700642C34 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2508B171FB07D7700642C34 /* Assets.xcassets */; };
+ B2508B1B1FB07D7700642C34 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2508B191FB07D7700642C34 /* LaunchScreen.storyboard */; };
+ B2508B261FB07D7700642C34 /* MeetingRoomsDynamicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508B251FB07D7700642C34 /* MeetingRoomsDynamicTests.swift */; };
+ B2508B311FB07D7700642C34 /* MeetingRoomsDynamicUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508B301FB07D7700642C34 /* MeetingRoomsDynamicUITests.swift */; };
+ B2508B3F1FB07DB500642C34 /* MeetingRoomListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2508B3E1FB07DB500642C34 /* MeetingRoomListViewController.swift */; };
+ B2F9ED7E1FB08A70007C012A /* DataCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED7D1FB08A70007C012A /* DataCenter.swift */; };
+ B2F9ED801FB08BD9007C012A /* BranchListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED7F1FB08BD9007C012A /* BranchListViewController.swift */; };
+ B2F9ED821FB08BEB007C012A /* ServiceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED811FB08BEB007C012A /* ServiceListViewController.swift */; };
+ B2F9ED841FB09AEC007C012A /* RoomInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED831FB09AEC007C012A /* RoomInfoViewController.swift */; };
+ B2F9ED861FB09DCF007C012A /* ReservationListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED851FB09DCF007C012A /* ReservationListViewController.swift */; };
+ B2F9ED881FB09E04007C012A /* ReserveRoomViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED871FB09E04007C012A /* ReserveRoomViewController.swift */; };
+ B2F9ED8A1FB0A99C007C012A /* TintColorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED891FB0A99C007C012A /* TintColorViewController.swift */; };
+ B2F9ED8C1FB0AC92007C012A /* EquipmentsDefault.plist in Resources */ = {isa = PBXBuildFile; fileRef = B2F9ED8B1FB0AC92007C012A /* EquipmentsDefault.plist */; };
+ B2F9ED8E1FB0ACE0007C012A /* EquipmentsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F9ED8D1FB0ACE0007C012A /* EquipmentsListViewController.swift */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ B2508B221FB07D7700642C34 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2508B051FB07D7600642C34 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2508B0C1FB07D7600642C34;
+ remoteInfo = MeetingRoomsDynamic;
+ };
+ B2508B2D1FB07D7700642C34 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2508B051FB07D7600642C34 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2508B0C1FB07D7600642C34;
+ remoteInfo = MeetingRoomsDynamic;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXFileReference section */
- 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TintColorViewController.swift; sourceTree = ""; };
- 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = EquipmentsDefault.plist; sourceTree = ""; };
- 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EquipmentsListViewController.swift; sourceTree = ""; };
- 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoViewController.swift; sourceTree = ""; };
- 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReservationListViewController.swift; sourceTree = ""; };
- 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReserveRoomViewController.swift; sourceTree = ""; };
- 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRoomsDynamic.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 2C9C27691C958848002525E4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 2C9C276E1C958848002525E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 2C9C27701C958849002525E4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 2C9C27731C958849002525E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 2C9C27751C958849002525E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MeetingRoomsListController.swift; sourceTree = ""; };
- 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataCenter.swift; sourceTree = ""; };
- 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BranchListViewController.swift; sourceTree = ""; };
- 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceListViewController.swift; sourceTree = ""; };
+ B2508B0D1FB07D7600642C34 /* MeetingRoomsDynamic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRoomsDynamic.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508B101FB07D7600642C34 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ B2508B121FB07D7600642C34 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ B2508B151FB07D7700642C34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ B2508B171FB07D7700642C34 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ B2508B1A1FB07D7700642C34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ B2508B1C1FB07D7700642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508B211FB07D7700642C34 /* MeetingRoomsDynamicTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MeetingRoomsDynamicTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508B251FB07D7700642C34 /* MeetingRoomsDynamicTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomsDynamicTests.swift; sourceTree = ""; };
+ B2508B271FB07D7700642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508B2C1FB07D7700642C34 /* MeetingRoomsDynamicUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MeetingRoomsDynamicUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2508B301FB07D7700642C34 /* MeetingRoomsDynamicUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomsDynamicUITests.swift; sourceTree = ""; };
+ B2508B321FB07D7700642C34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2508B3E1FB07DB500642C34 /* MeetingRoomListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomListViewController.swift; sourceTree = ""; };
+ B2F9ED7D1FB08A70007C012A /* DataCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataCenter.swift; sourceTree = ""; };
+ B2F9ED7F1FB08BD9007C012A /* BranchListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BranchListViewController.swift; sourceTree = ""; };
+ B2F9ED811FB08BEB007C012A /* ServiceListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceListViewController.swift; sourceTree = ""; };
+ B2F9ED831FB09AEC007C012A /* RoomInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomInfoViewController.swift; sourceTree = ""; };
+ B2F9ED851FB09DCF007C012A /* ReservationListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReservationListViewController.swift; sourceTree = ""; };
+ B2F9ED871FB09E04007C012A /* ReserveRoomViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReserveRoomViewController.swift; sourceTree = ""; };
+ B2F9ED891FB0A99C007C012A /* TintColorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TintColorViewController.swift; sourceTree = ""; };
+ B2F9ED8B1FB0AC92007C012A /* EquipmentsDefault.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = EquipmentsDefault.plist; sourceTree = ""; };
+ B2F9ED8D1FB0ACE0007C012A /* EquipmentsListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EquipmentsListViewController.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 2C9C27631C958847002525E4 /* Frameworks */ = {
+ B2508B0A1FB07D7600642C34 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B1E1FB07D7700642C34 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B291FB07D7700642C34 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -53,54 +94,77 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 2C9C275D1C958847002525E4 = {
+ B2508B041FB07D7600642C34 = {
isa = PBXGroup;
children = (
- 2C9C27681C958847002525E4 /* MeetingRoomsDynamic */,
- 2C9C27671C958847002525E4 /* Products */,
+ B2F9ED831FB09AEC007C012A /* RoomInfoViewController.swift */,
+ B2508B0F1FB07D7600642C34 /* MeetingRoomsDynamic */,
+ B2508B241FB07D7700642C34 /* MeetingRoomsDynamicTests */,
+ B2508B2F1FB07D7700642C34 /* MeetingRoomsDynamicUITests */,
+ B2508B0E1FB07D7600642C34 /* Products */,
);
sourceTree = "";
};
- 2C9C27671C958847002525E4 /* Products */ = {
+ B2508B0E1FB07D7600642C34 /* Products */ = {
isa = PBXGroup;
children = (
- 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */,
+ B2508B0D1FB07D7600642C34 /* MeetingRoomsDynamic.app */,
+ B2508B211FB07D7700642C34 /* MeetingRoomsDynamicTests.xctest */,
+ B2508B2C1FB07D7700642C34 /* MeetingRoomsDynamicUITests.xctest */,
);
name = Products;
sourceTree = "";
};
- 2C9C27681C958847002525E4 /* MeetingRoomsDynamic */ = {
+ B2508B0F1FB07D7600642C34 /* MeetingRoomsDynamic */ = {
isa = PBXGroup;
children = (
- 2C9C27691C958848002525E4 /* AppDelegate.swift */,
- 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */,
- 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */,
- 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */,
- 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */,
- 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */,
- 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */,
- 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */,
- 2C9C276D1C958848002525E4 /* Main.storyboard */,
- 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */,
- 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */,
- 2C9C27701C958849002525E4 /* Assets.xcassets */,
- 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */,
- 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */,
- 2C9C27751C958849002525E4 /* Info.plist */,
+ B2508B101FB07D7600642C34 /* AppDelegate.swift */,
+ B2508B121FB07D7600642C34 /* ViewController.swift */,
+ B2508B141FB07D7700642C34 /* Main.storyboard */,
+ B2F9ED8B1FB0AC92007C012A /* EquipmentsDefault.plist */,
+ B2F9ED8D1FB0ACE0007C012A /* EquipmentsListViewController.swift */,
+ B2F9ED891FB0A99C007C012A /* TintColorViewController.swift */,
+ B2F9ED871FB09E04007C012A /* ReserveRoomViewController.swift */,
+ B2F9ED851FB09DCF007C012A /* ReservationListViewController.swift */,
+ B2F9ED7D1FB08A70007C012A /* DataCenter.swift */,
+ B2F9ED7F1FB08BD9007C012A /* BranchListViewController.swift */,
+ B2F9ED811FB08BEB007C012A /* ServiceListViewController.swift */,
+ B2508B3E1FB07DB500642C34 /* MeetingRoomListViewController.swift */,
+ B2508B171FB07D7700642C34 /* Assets.xcassets */,
+ B2508B191FB07D7700642C34 /* LaunchScreen.storyboard */,
+ B2508B1C1FB07D7700642C34 /* Info.plist */,
);
path = MeetingRoomsDynamic;
sourceTree = "";
};
+ B2508B241FB07D7700642C34 /* MeetingRoomsDynamicTests */ = {
+ isa = PBXGroup;
+ children = (
+ B2508B251FB07D7700642C34 /* MeetingRoomsDynamicTests.swift */,
+ B2508B271FB07D7700642C34 /* Info.plist */,
+ );
+ path = MeetingRoomsDynamicTests;
+ sourceTree = "";
+ };
+ B2508B2F1FB07D7700642C34 /* MeetingRoomsDynamicUITests */ = {
+ isa = PBXGroup;
+ children = (
+ B2508B301FB07D7700642C34 /* MeetingRoomsDynamicUITests.swift */,
+ B2508B321FB07D7700642C34 /* Info.plist */,
+ );
+ path = MeetingRoomsDynamicUITests;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 2C9C27651C958847002525E4 /* MeetingRoomsDynamic */ = {
+ B2508B0C1FB07D7600642C34 /* MeetingRoomsDynamic */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 2C9C27781C958849002525E4 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */;
+ buildConfigurationList = B2508B351FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */;
buildPhases = (
- 2C9C27621C958847002525E4 /* Sources */,
- 2C9C27631C958847002525E4 /* Frameworks */,
- 2C9C27641C958847002525E4 /* Resources */,
+ B2508B091FB07D7600642C34 /* Sources */,
+ B2508B0A1FB07D7600642C34 /* Frameworks */,
+ B2508B0B1FB07D7600642C34 /* Resources */,
);
buildRules = (
);
@@ -108,89 +172,182 @@
);
name = MeetingRoomsDynamic;
productName = MeetingRoomsDynamic;
- productReference = 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */;
+ productReference = B2508B0D1FB07D7600642C34 /* MeetingRoomsDynamic.app */;
productType = "com.apple.product-type.application";
};
+ B2508B201FB07D7700642C34 /* MeetingRoomsDynamicTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2508B381FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamicTests" */;
+ buildPhases = (
+ B2508B1D1FB07D7700642C34 /* Sources */,
+ B2508B1E1FB07D7700642C34 /* Frameworks */,
+ B2508B1F1FB07D7700642C34 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2508B231FB07D7700642C34 /* PBXTargetDependency */,
+ );
+ name = MeetingRoomsDynamicTests;
+ productName = MeetingRoomsDynamicTests;
+ productReference = B2508B211FB07D7700642C34 /* MeetingRoomsDynamicTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ B2508B2B1FB07D7700642C34 /* MeetingRoomsDynamicUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2508B3B1FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamicUITests" */;
+ buildPhases = (
+ B2508B281FB07D7700642C34 /* Sources */,
+ B2508B291FB07D7700642C34 /* Frameworks */,
+ B2508B2A1FB07D7700642C34 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2508B2E1FB07D7700642C34 /* PBXTargetDependency */,
+ );
+ name = MeetingRoomsDynamicUITests;
+ productName = MeetingRoomsDynamicUITests;
+ productReference = B2508B2C1FB07D7700642C34 /* MeetingRoomsDynamicUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
- 2C9C275E1C958847002525E4 /* Project object */ = {
+ B2508B051FB07D7600642C34 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastSwiftUpdateCheck = 0710;
- LastUpgradeCheck = 0710;
- ORGANIZATIONNAME = CodersHigh;
+ LastSwiftUpdateCheck = 0910;
+ LastUpgradeCheck = 0910;
+ ORGANIZATIONNAME = Gompu;
TargetAttributes = {
- 2C9C27651C958847002525E4 = {
- CreatedOnToolsVersion = 7.1;
+ B2508B0C1FB07D7600642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ };
+ B2508B201FB07D7700642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2508B0C1FB07D7600642C34;
+ };
+ B2508B2B1FB07D7700642C34 = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2508B0C1FB07D7600642C34;
};
};
};
- buildConfigurationList = 2C9C27611C958847002525E4 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ buildConfigurationList = B2508B081FB07D7600642C34 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */;
+ compatibilityVersion = "Xcode 8.0";
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
- mainGroup = 2C9C275D1C958847002525E4;
- productRefGroup = 2C9C27671C958847002525E4 /* Products */;
+ mainGroup = B2508B041FB07D7600642C34;
+ productRefGroup = B2508B0E1FB07D7600642C34 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
- 2C9C27651C958847002525E4 /* MeetingRoomsDynamic */,
+ B2508B0C1FB07D7600642C34 /* MeetingRoomsDynamic */,
+ B2508B201FB07D7700642C34 /* MeetingRoomsDynamicTests */,
+ B2508B2B1FB07D7700642C34 /* MeetingRoomsDynamicUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 2C9C27641C958847002525E4 /* Resources */ = {
+ B2508B0B1FB07D7600642C34 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2508B1B1FB07D7700642C34 /* LaunchScreen.storyboard in Resources */,
+ B2F9ED8C1FB0AC92007C012A /* EquipmentsDefault.plist in Resources */,
+ B2508B181FB07D7700642C34 /* Assets.xcassets in Resources */,
+ B2508B161FB07D7700642C34 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B1F1FB07D7700642C34 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B2A1FB07D7700642C34 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2C5B2DA81CC71E8D007D75DD /* EquipmentsDefault.plist in Resources */,
- 2C9C27741C958849002525E4 /* LaunchScreen.storyboard in Resources */,
- 2C9C27711C958849002525E4 /* Assets.xcassets in Resources */,
- 2C9C276F1C958848002525E4 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 2C9C27621C958847002525E4 /* Sources */ = {
+ B2508B091FB07D7600642C34 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2F9ED841FB09AEC007C012A /* RoomInfoViewController.swift in Sources */,
+ B2508B131FB07D7600642C34 /* ViewController.swift in Sources */,
+ B2508B111FB07D7600642C34 /* AppDelegate.swift in Sources */,
+ B2F9ED8E1FB0ACE0007C012A /* EquipmentsListViewController.swift in Sources */,
+ B2F9ED861FB09DCF007C012A /* ReservationListViewController.swift in Sources */,
+ B2F9ED7E1FB08A70007C012A /* DataCenter.swift in Sources */,
+ B2F9ED801FB08BD9007C012A /* BranchListViewController.swift in Sources */,
+ B2F9ED821FB08BEB007C012A /* ServiceListViewController.swift in Sources */,
+ B2508B3F1FB07DB500642C34 /* MeetingRoomListViewController.swift in Sources */,
+ B2F9ED881FB09E04007C012A /* ReserveRoomViewController.swift in Sources */,
+ B2F9ED8A1FB0A99C007C012A /* TintColorViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B1D1FB07D7700642C34 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2CAA1EF81CB3FA7C0096F3FA /* ServiceListViewController.swift in Sources */,
- 2C6F67121CC342F3007EAEC7 /* ReservationListViewController.swift in Sources */,
- 2C5B2DAA1CC726B8007D75DD /* EquipmentsListViewController.swift in Sources */,
- 2C6F67141CC34BDF007EAEC7 /* ReserveRoomViewController.swift in Sources */,
- 2CAA1EF41CB3F36D0096F3FA /* DataCenter.swift in Sources */,
- 2C9C277C1C9588BE002525E4 /* MeetingRoomsListController.swift in Sources */,
- 2CAA1EF61CB3FA630096F3FA /* BranchListViewController.swift in Sources */,
- 2C9C276A1C958848002525E4 /* AppDelegate.swift in Sources */,
- 2C6F67101CC233F5007EAEC7 /* RoomInfoViewController.swift in Sources */,
- 2C1A2E7B1CC7603D0069EEED /* TintColorViewController.swift in Sources */,
+ B2508B261FB07D7700642C34 /* MeetingRoomsDynamicTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2508B281FB07D7700642C34 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2508B311FB07D7700642C34 /* MeetingRoomsDynamicUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ B2508B231FB07D7700642C34 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2508B0C1FB07D7600642C34 /* MeetingRoomsDynamic */;
+ targetProxy = B2508B221FB07D7700642C34 /* PBXContainerItemProxy */;
+ };
+ B2508B2E1FB07D7700642C34 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2508B0C1FB07D7600642C34 /* MeetingRoomsDynamic */;
+ targetProxy = B2508B2D1FB07D7700642C34 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
- 2C9C276D1C958848002525E4 /* Main.storyboard */ = {
+ B2508B141FB07D7700642C34 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C9C276E1C958848002525E4 /* Base */,
+ B2508B151FB07D7700642C34 /* Base */,
);
name = Main.storyboard;
sourceTree = "";
};
- 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */ = {
+ B2508B191FB07D7700642C34 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C9C27731C958849002525E4 /* Base */,
+ B2508B1A1FB07D7700642C34 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "";
@@ -198,29 +355,41 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
- 2C9C27761C958849002525E4 /* Debug */ = {
+ B2508B331FB07D7700642C34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -234,38 +403,50 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C9C27771C958849002525E4 /* Release */ = {
+ B2508B341FB07D7700642C34 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
@@ -273,58 +454,144 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
- 2C9C27791C958849002525E4 /* Debug */ = {
+ B2508B361FB07D7700642C34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MeetingRoomsDynamic/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRoomsDynamic;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamic;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C9C277A1C958849002525E4 /* Release */ = {
+ B2508B371FB07D7700642C34 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MeetingRoomsDynamic/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRoomsDynamic;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamic;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ B2508B391FB07D7700642C34 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsDynamicTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamicTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MeetingRoomsDynamic.app/MeetingRoomsDynamic";
+ };
+ name = Debug;
+ };
+ B2508B3A1FB07D7700642C34 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsDynamicTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamicTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MeetingRoomsDynamic.app/MeetingRoomsDynamic";
+ };
+ name = Release;
+ };
+ B2508B3C1FB07D7700642C34 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsDynamicUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamicUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MeetingRoomsDynamic;
+ };
+ name = Debug;
+ };
+ B2508B3D1FB07D7700642C34 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MeetingRoomsDynamicUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MeetingRoomsDynamicUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MeetingRoomsDynamic;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 2C9C27611C958847002525E4 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */ = {
+ B2508B081FB07D7600642C34 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2508B331FB07D7700642C34 /* Debug */,
+ B2508B341FB07D7700642C34 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2508B351FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2508B361FB07D7700642C34 /* Debug */,
+ B2508B371FB07D7700642C34 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2508B381FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamicTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C9C27761C958849002525E4 /* Debug */,
- 2C9C27771C958849002525E4 /* Release */,
+ B2508B391FB07D7700642C34 /* Debug */,
+ B2508B3A1FB07D7700642C34 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 2C9C27781C958849002525E4 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */ = {
+ B2508B3B1FB07D7700642C34 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamicUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C9C27791C958849002525E4 /* Debug */,
- 2C9C277A1C958849002525E4 /* Release */,
+ B2508B3C1FB07D7700642C34 /* Debug */,
+ B2508B3D1FB07D7700642C34 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
- rootObject = 2C9C275E1C958847002525E4 /* Project object */;
+ rootObject = B2508B051FB07D7600642C34 /* Project object */;
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..c52d61b
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift
index 7624358..daec313 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift
@@ -2,8 +2,8 @@
// AppDelegate.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 3. 13..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
@@ -14,38 +14,36 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
- func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
-
return true
}
- func applicationWillResignActive(application: UIApplication) {
+ func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
- func applicationDidEnterBackground(application: UIApplication) {
+ func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
dataCenter.save()
}
- func applicationWillEnterForeground(application: UIApplication) {
- // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
- func applicationDidBecomeActive(application: UIApplication) {
+ func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
-
- let userDefaultColor = NSUserDefaults.standardUserDefaults().integerForKey(TintColorKey)
+ let userDefaultColor = UserDefaults.standard.integer(forKey: TintColorKey)
guard let defaultColor = TintColor(rawValue: userDefaultColor)?.color else {
return
}
applyTintColor(defaultColor)
}
- func applicationWillTerminate(application: UIApplication) {
+ func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
dataCenter.save()
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json
index eeea76c..d8db8d6 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,5 +1,15 @@
{
"images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
{
"idiom" : "iphone",
"size" : "29x29",
@@ -30,6 +40,16 @@
"size" : "60x60",
"scale" : "3x"
},
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
{
"idiom" : "ipad",
"size" : "29x29",
@@ -64,6 +84,11 @@
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
}
],
"info" : {
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json
index bf9fa3c..716ffc5 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json
@@ -6,7 +6,7 @@
},
{
"idiom" : "universal",
- "filename" : "building_tab.png",
+ "filename" : "building.png",
"scale" : "2x"
},
{
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building.png b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building.png
new file mode 100644
index 0000000..6f28471
Binary files /dev/null and b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building.png differ
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png
deleted file mode 100644
index b8bb3f1..0000000
Binary files a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png and /dev/null differ
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json
index 31ee980..61738a4 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json
@@ -6,7 +6,7 @@
},
{
"idiom" : "universal",
- "filename" : "equipment_tab.png",
+ "filename" : "equipment.png",
"scale" : "2x"
},
{
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment.png b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment.png
new file mode 100644
index 0000000..499188d
Binary files /dev/null and b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment.png differ
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png
deleted file mode 100644
index a5ae185..0000000
Binary files a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png and /dev/null differ
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png
index 064332f..aa6dc02 100644
Binary files a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png and b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png differ
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard
index 2e721e1..f83f6fd 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard
@@ -1,22 +1,20 @@
-
+
-
+
+
+
-
-
-
-
-
+
-
-
+
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard
index 5958a44..ee83234 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard
@@ -1,208 +1,336 @@
-
-
+
+
+
+
+
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
+
+
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -210,72 +338,80 @@
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -285,459 +421,291 @@
-
-
+
+
-
-
+
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
+
-
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
+
-
+
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
+
+
+
-
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -745,44 +713,48 @@
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
-
-
+
+
-
+
+
+
+
+
+
-
-
+
+
-
+
-
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift
index 2aaf60e..21e9937 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift
@@ -2,8 +2,8 @@
// BranchListViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 5..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
@@ -11,62 +11,95 @@ import UIKit
class BranchListViewController: UITableViewController {
override func viewDidLoad() {
- self.title = "지점"
+ super.viewDidLoad()
+
+ // Uncomment the following line to preserve selection between presentations
+ // self.clearsSelectionOnViewWillAppear = false
+
+ // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
+ self.navigationController?.setToolbarHidden(true, animated: false)
}
-
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
-
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+ // MARK: - Table view data source
+
+ override func numberOfSections(in tableView: UITableView) -> Int {
+ // #warning Incomplete implementation, return the number of sections
return 1
}
-
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-
+
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ // #warning Incomplete implementation, return the number of rows
let rowCount = dataCenter.branches.count
return rowCount
}
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("BranchCell", forIndexPath: indexPath)
+
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "BranchCell", for: indexPath)
let branch = dataCenter.branches[indexPath.row]
cell.textLabel?.text = branch.name
+
return cell
}
-
-
+
+ @IBAction func locationTurnOn(_ sender: Any) {
+ let locationAlert = UIAlertController(title: "위치 정보 요청", message: "위치 정보를 기반으로 가까운 지점을 자동으로 선택할 수 있습니다. 또는 지도앱에서 지점의 위치 정보를 제공해 드립니다. 선택하신 기능이 계속 제공됩니다. 환경설정에서 제공되는 기능을 변경할 수 있습니다.", preferredStyle: .actionSheet)
+ let locationAction = UIAlertAction(title: "위치정보 켜기", style: .default, handler: {(action: UIAlertAction) -> Void in print("위치정보 켜기 선택")})
+ let openMapAction = UIAlertAction(title: "지도앱에서 열기", style: .default, handler: {(action: UIAlertAction) -> Void in print("지도앱에서 열기 선택")})
+ locationAlert.addAction(locationAction)
+ locationAlert.addAction(openMapAction)
+
+ self.present(locationAlert, animated: true, completion: nil)
+ }
/*
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
- if segue.identifier == "ServiceSegue" {
- if let destination = segue.destinationViewController as? ServiceListViewController {
- if let selectedIndex = self.tableView.indexPathForSelectedRow?.row {
- destination.branch = dataCenter.branches[selectedIndex] as Branch
- }
-
- }
- }
+ // Override to support conditional editing of the table view.
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the specified item to be editable.
+ return true
}
*/
-
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+
+ /*
+ // Override to support editing the table view.
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
+ // Delete the row from the data source
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+ }
+ */
+
+ /*
+ // Override to support rearranging the table view.
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
+
+ }
+ */
+
+ /*
+ // Override to support conditional rearranging of the table view.
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the item to be re-orderable.
+ return true
+ }
+ */
+
+ // MARK: - Navigation
+
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ServiceSegue" {
- guard let destination = segue.destinationViewController as? ServiceListViewController, selectedIndex = self.tableView.indexPathForSelectedRow?.row else {
- return
+ if let destination = segue.destination as? ServiceListViewController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row {
+ destination.branch = dataCenter.branches[selectedIndex] as Branch
}
- destination.branch = dataCenter.branches[selectedIndex] as Branch
}
}
- @IBAction func locationTurnOn(sender: AnyObject) {
-
- let locationAlert = UIAlertController(title: "위치 정보 요청", message: "위치 정보를 기반으로 가까운 지점을 자동으로 선택할 수 있습니다. 또는 지도앱에서 지점의 위치 정보를 제공해 드립니다. 선택하신 기능이 계속 제공됩니다. 환경설정에서 제공되는 기능을 변경할 수 있습니다.", preferredStyle: .ActionSheet)
- let locationAction = UIAlertAction(title: "위치정보 켜기", style: .Default, handler: { (action:UIAlertAction) -> Void in
- print ("위치정보 켜기 선택")
- })
- let openMapAction = UIAlertAction(title: "지도앱에서 열기", style: .Default, handler: { (action:UIAlertAction) -> Void in
- print ("지도앱에서 열기 선택")
- })
-
- locationAlert.addAction(locationAction)
- locationAlert.addAction(openMapAction)
- self.presentViewController(locationAlert, animated: true, completion: nil)
- }
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift
index a547081..d9a2469 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift
@@ -2,49 +2,51 @@
// DataCenter.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 5..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import Foundation
-let dataCenter:DataCenter = DataCenter()
+let dataCenter: DataCenter = DataCenter()
let fileName = "BranchData.brch"
class DataCenter {
- var branches:[Branch] = []
+ var branches: [Branch] = []
- var filePath:String { get{
- let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
- return documentDirectory + fileName
- }}
+ var filePath: String {
+ get {
+ let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
+ return documentDirectory + fileName
+ }
+ }
init() {
- if NSFileManager.defaultManager().fileExistsAtPath(self.filePath) {
- //read
- if let unarchArray = NSKeyedUnarchiver.unarchiveObjectWithFile(self.filePath) as? [Branch] {
+
+ if FileManager.default.fileExists(atPath: self.filePath) {
+ if let unarchArray = NSKeyedUnarchiver.unarchiveObject(withFile: self.filePath) as? [Branch] {
branches += unarchArray
}
} else {
- //create
branches += defaultData()
}
-
-
}
+ func save() {
+ NSKeyedArchiver.archiveRootObject(self.branches, toFile: self.filePath)
+ }
+
func defaultData() -> Array {
let banksyRoom = MeetingRoom(name: "Banksy", capacity: 4)
let kahloRoom = MeetingRoom(name: "Kahlo", capacity: 8)
let riveraRoom = MeetingRoom(name: "Rivera", capacity: 8)
let picassoRoom = MeetingRoom(name: "Picasso", capacity: 10)
-
let vehicleService = Service(name: "차량예약")
let meetingRoomService = Service(name: "회의실예약")
let visitorService = Service(name: "방문자예약")
let deskService = Service(name: "데스크예약")
- meetingRoomService.item = [banksyRoom, kahloRoom, riveraRoom, picassoRoom]
+ meetingRoomService.items = [banksyRoom, kahloRoom, riveraRoom, picassoRoom]
let pangyoBranch = Branch(name: "판교점")
let samsungBranch = Branch(name: "삼성점")
@@ -54,112 +56,101 @@ class DataCenter {
let anamBranch = Branch(name: "안암점")
pangyoBranch.services = [vehicleService, meetingRoomService, visitorService, deskService]
- let branchArray = [samsungBranch, pangyoBranch, yeoksamBranch, sinrimBranch, songdoBranch, anamBranch]
+ let branchArray = [pangyoBranch, samsungBranch, yeoksamBranch, sinrimBranch, songdoBranch, anamBranch]
+
return branchArray
}
-
- func save(){
- NSKeyedArchiver.archiveRootObject(self.branches, toFile: self.filePath)
- }
}
-
-class Branch:NSObject, NSCoding {
- let name:String
- var services:[Service]?
+class Branch: NSObject, NSCoding {
+ let name: String
+ var services: [Service]?
- init(name:String) {
+ init(name: String) {
self.name = name
}
required init?(coder aDecoder: NSCoder) {
- self.name = aDecoder.decodeObjectForKey("name") as! String
- self.services = aDecoder.decodeObjectForKey("services") as? [Service]
+ self.name = aDecoder.decodeObject(forKey: "name") as! String
+ self.services = aDecoder.decodeObject(forKey: "services") as? [Service]
}
- func encodeWithCoder(aCoder: NSCoder) {
- aCoder.encodeObject(self.name, forKey: "name")
- aCoder.encodeObject(self.services, forKey: "services")
+ func encode(with aCoder: NSCoder) {
+ aCoder.encode(self.name, forKey: "name")
+ aCoder.encode(self.services, forKey: "services")
}
}
-
-class Service:NSObject, NSCoding {
- let name:String
- var item:[MeetingRoom]?
+class Service: NSObject, NSCoding {
+ let name: String
+ var items: [MeetingRoom]?
- init (name:String){
+ init(name: String) {
self.name = name
}
required init?(coder aDecoder: NSCoder) {
- self.name = aDecoder.decodeObjectForKey("name") as! String
- self.item = aDecoder.decodeObjectForKey("item") as? [MeetingRoom]
+ self.name = aDecoder.decodeObject(forKey: "name") as! String
+ self.items = aDecoder.decodeObject(forKey: "items") as? [MeetingRoom]
}
- func encodeWithCoder(aCoder: NSCoder) {
- aCoder.encodeObject(self.name, forKey: "name")
- aCoder.encodeObject(self.item, forKey: "item")
+ func encode(with aCoder: NSCoder) {
+ aCoder.encode(self.name, forKey: "name")
+ aCoder.encode(self.items, forKey: "items")
}
-
}
+class MeetingRoom: NSObject, NSCoding {
+ let name: String
+ let capacity: Int
+ var reservations: [Reservation]?
-class MeetingRoom:NSObject, NSCoding {
- let name:String
- let capacity:Int
- var reservations:[Reservation]?
-
- init(name:String, capacity:Int) {
+ init(name: String, capacity: Int) {
self.name = name
self.capacity = capacity
}
required init?(coder aDecoder: NSCoder) {
- self.name = aDecoder.decodeObjectForKey("name") as! String
- self.capacity = aDecoder.decodeIntegerForKey("capacity")
- self.reservations = aDecoder.decodeObjectForKey("reservations") as? [Reservation]
+ self.name = aDecoder.decodeObject(forKey: "name") as! String
+ self.capacity = aDecoder.decodeInteger(forKey: "capacity")
+ self.reservations = aDecoder.decodeObject(forKey: "reservations") as? [Reservation]
}
- func encodeWithCoder(aCoder: NSCoder) {
- aCoder.encodeObject(self.name, forKey: "name")
- aCoder.encodeInteger(self.capacity, forKey: "capacity")
- aCoder.encodeObject(self.reservations, forKey: "reservations")
+ func encode(with aCoder: NSCoder) {
+ aCoder.encode(self.name, forKey: "name")
+ aCoder.encode(self.capacity, forKey: "capacity")
+ aCoder.encode(self.reservations, forKey: "reservations")
}
}
-
-
-class Reservation:NSObject, NSCoding {
- var hostName:String
- var date:NSDate
- var attendees:Int
- var equipments:[String]
- var catering:Bool
+class Reservation: NSObject, NSCoding {
+ var hostName: String
+ var date: NSDate
+ var attendees: Int
+ var equipments: [String]
+ var catering: Bool
override init() {
- self.hostName = "Host of meeting"
+ self.hostName = "Host of Meeting"
self.date = NSDate()
self.attendees = 1
self.equipments = []
self.catering = false
}
-
required init?(coder aDecoder: NSCoder) {
- self.hostName = aDecoder.decodeObjectForKey("hostName") as! String
- self.date = aDecoder.decodeObjectForKey("date") as! NSDate
- self.attendees = aDecoder.decodeIntegerForKey("attendees")
- self.equipments = aDecoder.decodeObjectForKey("equipments") as! [String]
- self.catering = aDecoder.decodeBoolForKey("catering")
+ self.hostName = aDecoder.decodeObject(forKey: "hostName") as! String
+ self.date = aDecoder.decodeObject(forKey: "date") as! NSDate
+ self.attendees = aDecoder.decodeInteger(forKey: "attendees")
+ self.equipments = aDecoder.decodeObject(forKey: "equipments") as! [String]
+ self.catering = aDecoder.decodeBool(forKey: "catering")
}
- func encodeWithCoder(aCoder: NSCoder) {
- aCoder.encodeObject(self.hostName, forKey: "hostName")
- aCoder.encodeObject(self.date, forKey: "date")
- aCoder.encodeInteger(self.attendees, forKey: "attendees")
- aCoder.encodeObject(self.equipments, forKey: "equipments")
- aCoder.encodeBool(self.catering, forKey: "catering")
+ func encode(with aCoder: NSCoder) {
+ aCoder.encode(self.hostName, forKey: "hostName")
+ aCoder.encode(self.date, forKey: "date")
+ aCoder.encode(self.attendees, forKey: "attendees")
+ aCoder.encode(self.equipments, forKey: "equipments")
+ aCoder.encode(self.catering, forKey: "catering")
}
}
-
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift
index b7dc7ce..9acd997 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift
@@ -2,17 +2,17 @@
// EquipmentsListViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 20..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
-
let EquipmentFileName = "EquipmentsDefault"
-class EquipmentsListViewController: UITableViewController {
- var equipments:Array = []
+class EquipmentsListViewController: UITableViewController {
+ var equipments:Array = []
+
override func viewDidLoad() {
super.viewDidLoad()
@@ -20,17 +20,16 @@ class EquipmentsListViewController: UITableViewController {
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem()
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
- guard let equipmentURL = NSBundle.mainBundle().URLForResource(EquipmentFileName, withExtension: "plist") else {
+ guard let equipmentURL = Bundle.main.url(forResource: EquipmentFileName, withExtension: "plist") else {
print("No File")
return
}
- if let equipmentsArray = NSArray(contentsOfURL: equipmentURL){
- print(equipmentsArray)
+
+ if let equipmentsArray = NSArray(contentsOf: equipmentURL) {
equipments += Array(equipmentsArray)
}
-
}
override func didReceiveMemoryWarning() {
@@ -40,36 +39,40 @@ class EquipmentsListViewController: UITableViewController {
// MARK: - Table view data source
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
+ override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return equipments.count
}
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("EquipmentCell", forIndexPath: indexPath)
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "EquipmentCell", for: indexPath)
- guard let equipment = equipments[indexPath.row] as? [String:AnyObject] else {
+ // Configure the cell...
+
+ guard let equipment = equipments[indexPath.row] as? [String: AnyObject] else {
return cell
}
-
+
if let name = equipment["name"] as? String {
cell.textLabel?.text = name
}
+
if let amount = equipment["amount"] as? Int {
cell.detailTextLabel?.text = String(amount)
}
-
+
return cell
}
+
/*
// Override to support conditional editing of the table view.
- override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
@@ -77,11 +80,11 @@ class EquipmentsListViewController: UITableViewController {
/*
// Override to support editing the table view.
- override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
- if editingStyle == .Delete {
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
// Delete the row from the data source
- tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
- } else if editingStyle == .Insert {
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
@@ -89,14 +92,14 @@ class EquipmentsListViewController: UITableViewController {
/*
// Override to support rearranging the table view.
- override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
}
*/
/*
// Override to support conditional rearranging of the table view.
- override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
@@ -106,7 +109,7 @@ class EquipmentsListViewController: UITableViewController {
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist
index 40c6215..16be3b6 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist
@@ -3,7 +3,7 @@
CFBundleDevelopmentRegion
- en
+ $(DEVELOPMENT_LANGUAGE)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -16,8 +16,6 @@
APPL
CFBundleShortVersionString
1.0
- CFBundleSignature
- ????
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomListViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomListViewController.swift
new file mode 100644
index 0000000..f37c36e
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomListViewController.swift
@@ -0,0 +1,108 @@
+//
+// MeetingRoomListViewController.swift
+// MeetingRoomsDynamic
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import UIKit
+
+class MeetingRoomListViewController: UITableViewController {
+
+ var service: Service?
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ // Uncomment the following line to preserve selection between presentations
+ // self.clearsSelectionOnViewWillAppear = false
+
+ // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
+ self.title = service?.name
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+ // MARK: - Table view data source
+
+ override func numberOfSections(in tableView: UITableView) -> Int {
+ // #warning Incomplete implementation, return the number of sections
+ return 1
+ }
+
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ // #warning Incomplete implementation, return the number of rows
+ guard let rowCount = service?.items?.count else {
+ return 0
+ }
+ return rowCount
+ }
+
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath)
+
+ guard let meetingRoom = service?.items?[indexPath.row] else {
+ return cell
+ }
+ cell.textLabel?.text = meetingRoom.name
+ cell.detailTextLabel?.text = String(meetingRoom.capacity)
+ // Configure the cell...
+
+ return cell
+ }
+
+ /*
+ // Override to support conditional editing of the table view.
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the specified item to be editable.
+ return true
+ }
+ */
+
+ /*
+ // Override to support editing the table view.
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
+ // Delete the row from the data source
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+ }
+ */
+
+ /*
+ // Override to support rearranging the table view.
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
+
+ }
+ */
+
+ /*
+ // Override to support conditional rearranging of the table view.
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the item to be re-orderable.
+ return true
+ }
+ */
+
+ // MARK: - Navigation
+
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
+ // Get the new view controller using segue.destinationViewController.
+ // Pass the selected object to the new view controller.
+ if segue.identifier == "ReservationSegue" {
+ guard let destination = segue.destination as? ReservationListViewController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row, let meetingRoom = service?.items?[selectedIndex] else {
+ return
+ }
+ destination.meetingRoom = meetingRoom
+ }
+ }
+
+}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift
deleted file mode 100644
index 2fda216..0000000
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift
+++ /dev/null
@@ -1,179 +0,0 @@
-//
-// MeetingRoomsListController.swift
-// MeetingRoomsDynamic
-//
-// Created by Lingostar on 2016. 3. 13..
-// Copyright © 2016년 CodersHigh. All rights reserved.
-//
-
-import UIKit
-
-/*
-class MeetingRoomsListController: UITableViewController {
-
- //var meetingRooms:[String:Int] = ["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10, "Cezanne":20, "Matisse":30, "Renoir":40]
- var meetingRooms:[String:[String:Int]] = ["Meeting":["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10], "Seminar":["Cezanne":20, "Matisse":30, "Renoir":40]]
-
- func meetingRoomsAtIndex(index:Int) -> (key:String, value:[String:Int]) {
- let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1})
- return orderedMeetingRooms[index]
- }
- //Generic
-
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- // Uncomment the following line to preserve selection between presentations
- // self.clearsSelectionOnViewWillAppear = false
-
- // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem()
-
-
- }
-
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
-
- // MARK: - Table view data source
-
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
- // #warning Incomplete implementation, return the number of sections
- return meetingRooms.count
- }
-
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- // #warning Incomplete implementation, return the number of rows
- //let categoryValues = Array(meetingRooms.values)[section]
-
- //let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1})
-
- //let rowCount = orderedMeetingRooms[section].1.count
- let rowCount = meetingRoomsAtIndex(section).value.count
- return rowCount
- }
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath)
-
- //let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1})
- //let categoryValue = orderedMeetingRooms[indexPath.section].1
- let categoryValue = meetingRoomsAtIndex(indexPath.section).value
-
- let orderedCategoryValues = categoryValue.sort({$0.1 < $1.1})
- let roomName = orderedCategoryValues[indexPath.row].0
- let capacity = orderedCategoryValues[indexPath.row].1
-
- cell.textLabel!.text = roomName
- cell.detailTextLabel!.text = "\(capacity)"
-
- return cell
- }
-
-
- override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
-
- return Array(meetingRooms.keys)[section]
- }
-
- override func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? {
-
- let rowCount = Array(meetingRooms.values)[section].count
-
- return "\(rowCount) rooms"
- }
-
- /*
- // Override to support conditional editing of the table view.
- override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
- // Return false if you do not want the specified item to be editable.
- return true
- }
- */
-
- /*
- // Override to support editing the table view.
- override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
- if editingStyle == .Delete {
- // Delete the row from the data source
- tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
- } else if editingStyle == .Insert {
- // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
- }
- }
- */
-
- /*
- // Override to support rearranging the table view.
- override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
-
- }
- */
-
- /*
- // Override to support conditional rearranging of the table view.
- override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
- // Return false if you do not want the item to be re-orderable.
- return true
- }
- */
-
- /*
- // MARK: - Navigation
-
- // In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
- // Get the new view controller using segue.destinationViewController.
- // Pass the selected object to the new view controller.
- }
- */
-
-}
-
- */
-
-
-class MeetingRoomsListController: UITableViewController {
- var service:Service?
-
- override func viewDidLoad() {
- self.title = service?.name
- }
-
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
-
- return 1
- }
-
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- guard let rowCount = service?.item?.count else {
- return 0
- }
- return rowCount
- }
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("ItemCell", forIndexPath: indexPath)
-
- guard let meetingRoom = service?.item?[indexPath.row] else {
- return cell
- }
- cell.textLabel?.text = meetingRoom.name
- cell.detailTextLabel?.text = String(meetingRoom.capacity)
- return cell
- }
-
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
- if segue.identifier == "ReservationSegue" {
- guard let destination = segue.destinationViewController as? ReservationListViewController, selectedIndex = self.tableView.indexPathForSelectedRow?.row , meetingRoom = service?.item?[selectedIndex] else {
- return
- }
- destination.meetingRoom = meetingRoom
- }
- }
-}
-
-
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift
index 12b6314..cccf1e0 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift
@@ -2,17 +2,17 @@
// ReservationListViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 17..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
class ReservationListViewController: UITableViewController {
-
- var meetingRoom:MeetingRoom?
- var newReservation:Reservation?
+ var meetingRoom: MeetingRoom?
+ var newReservation: Reservation?
+
override func viewDidLoad() {
super.viewDidLoad()
@@ -20,57 +20,55 @@ class ReservationListViewController: UITableViewController {
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem()
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
-
- func addNewItem(reservation:Reservation) {
- if (self.meetingRoom?.reservations?.append(reservation)) == nil {
+
+ func addNewItem(_ reservation: Reservation) {
+ if (self.meetingRoom?.reservations?.append(reservation) == nil) {
self.meetingRoom?.reservations = [reservation]
}
dataCenter.save()
-
self.tableView.reloadData()
-
}
- @IBAction func unwindToReserveList(segue:UIStoryboardSegue) {
+ @IBAction func unwindToReserveList(_ segue: UIStoryboardSegue) {
print("unwind")
}
-
// MARK: - Table view data source
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
+ override func numberOfSections(in tableView: UITableView) -> Int {
+ // #warning Incomplete implementation, return the number of sections
return 1
}
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ // #warning Incomplete implementation, return the number of rows
guard let rowCount = meetingRoom?.reservations?.count else {
return 0
}
return rowCount
}
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("ReservationCell", forIndexPath: indexPath)
-
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "ReservationCell", for: indexPath)
+
guard let reservation = meetingRoom?.reservations?[indexPath.row] else {
return cell
}
cell.textLabel?.text = reservation.date.description
cell.detailTextLabel?.text = reservation.hostName
+
return cell
}
-
/*
// Override to support conditional editing of the table view.
- override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
@@ -78,11 +76,11 @@ class ReservationListViewController: UITableViewController {
/*
// Override to support editing the table view.
- override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
- if editingStyle == .Delete {
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
// Delete the row from the data source
- tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
- } else if editingStyle == .Insert {
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
@@ -90,14 +88,14 @@ class ReservationListViewController: UITableViewController {
/*
// Override to support rearranging the table view.
- override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
}
*/
/*
// Override to support conditional rearranging of the table view.
- override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
@@ -107,7 +105,7 @@ class ReservationListViewController: UITableViewController {
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift
index 49483ea..79e4f26 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift
@@ -2,24 +2,19 @@
// ReserveRoomViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 17..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
class ReserveRoomViewController: UITableViewController {
-
- //var reservation:Reservation?
-
@IBOutlet weak var hostNameField: UITextField!
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var attendeesField: UITextField!
- @IBOutlet weak var equipmentsField: UITextField!
+ @IBOutlet weak var equipmentField: UITextField!
@IBOutlet weak var cateringSwitch: UISwitch!
-
-
override func viewDidLoad() {
super.viewDidLoad()
@@ -27,69 +22,45 @@ class ReserveRoomViewController: UITableViewController {
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem()
-
-
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
}
-
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
-
- @IBAction func makeReservation(sender: AnyObject) {
- guard let reservation = makeReservation() else {
- self.dismissViewControllerAnimated(true, completion: {
- })
- return
+
+ func newReservation() -> Reservation? {
+ let reservation = Reservation()
+ let host = hostNameField.text!
+ if host.isEmpty {
+ return nil
}
+ reservation.hostName = host
+ reservation.date = datePicker.date as NSDate
- switch self.presentingViewController {
- case let tabBarC as UITabBarController:
- if let navigationC = tabBarC.selectedViewController as? UINavigationController, reservationListVC = navigationC.topViewController as? ReservationListViewController {
- reservationListVC.addNewItem(reservation)
- }
- case let navigationC as UINavigationController:
- if let reservationListVC = navigationC.topViewController as? ReservationListViewController {
- reservationListVC.addNewItem(reservation)
- }
- case let reservationListVC as ReservationListViewController:
- reservationListVC.addNewItem(reservation)
- default:
- print("Cannot find ReservationListViewController")
- break
+ if let equipmentArray = equipmentField.text?.split(separator: ",").map(String.init) {
+ reservation.equipments = equipmentArray
}
-
- self.dismissViewControllerAnimated(true, completion: {
- })
-
- }
-
-
- @IBAction func cancelReservation(sender: AnyObject) {
- self.dismissViewControllerAnimated(true, completion: nil)
+ reservation.catering = cateringSwitch.isOn
+ return reservation
}
-
-
-
-
-
+
// MARK: - Table view data source
- /*
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
+/*
+ override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 0
}
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 0
}
-
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
+*/
+ /*
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
@@ -99,7 +70,7 @@ class ReserveRoomViewController: UITableViewController {
/*
// Override to support conditional editing of the table view.
- override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
@@ -107,11 +78,11 @@ class ReserveRoomViewController: UITableViewController {
/*
// Override to support editing the table view.
- override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
- if editingStyle == .Delete {
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
// Delete the row from the data source
- tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
- } else if editingStyle == .Insert {
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
@@ -119,44 +90,29 @@ class ReserveRoomViewController: UITableViewController {
/*
// Override to support rearranging the table view.
- override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
}
*/
/*
// Override to support conditional rearranging of the table view.
- override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
*/
-
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ReserveDone" {
- guard let newReservation = makeReservation(), reservationListVC = segue.destinationViewController as? ReservationListViewController else {
+ guard let reservation = newReservation(), let reservationListVC = segue.destination as? ReservationListViewController else {
return
}
- reservationListVC.addNewItem(newReservation)
+ reservationListVC.addNewItem(reservation)
}
}
- func makeReservation() -> Reservation? {
- let newReservation = Reservation()
- let host = hostNameField.text!
- if host.isEmpty {
- return nil
- }
- newReservation.hostName = host
- newReservation.date = datePicker.date
- if let equipmentArray = equipmentsField.text?.characters.split(",").map(String.init) {
- newReservation.equipments = equipmentArray
- }
- newReservation.catering = cateringSwitch.on
- return newReservation
- }
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift
index 239fb74..f5982c4 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift
@@ -2,48 +2,109 @@
// ServiceListViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 5..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
class ServiceListViewController: UITableViewController {
-
- var branch:Branch?
-
+ var branch: Branch?
+
override func viewDidLoad() {
+ super.viewDidLoad()
+
+ // Uncomment the following line to preserve selection between presentations
+ // self.clearsSelectionOnViewWillAppear = false
+
+ // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
+
self.title = branch?.name
+ self.navigationItem.title = "\(branch!.name) 정보"
+ self.navigationController?.setToolbarHidden(false, animated: false)
}
-
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
-
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+ // MARK: - Table view data source
+
+ override func numberOfSections(in tableView: UITableView) -> Int {
+ // #warning Incomplete implementation, return the number of sections
return 1
}
-
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ // #warning Incomplete implementation, return the number of rows
+
guard let rowCount = branch?.services?.count else {
return 0
}
return rowCount
}
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("ServiceCell", forIndexPath: indexPath)
+
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "ServiceCell", for: indexPath)
guard let service = branch?.services?[indexPath.row] else {
return cell
}
+
cell.textLabel?.text = service.name
return cell
}
-
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+
+ /*
+ // Override to support conditional editing of the table view.
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the specified item to be editable.
+ return true
+ }
+ */
+
+ /*
+ // Override to support editing the table view.
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
+ // Delete the row from the data source
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+ }
+ */
+
+ /*
+ // Override to support rearranging the table view.
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
+
+ }
+ */
+
+ /*
+ // Override to support conditional rearranging of the table view.
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
+ // Return false if you do not want the item to be re-orderable.
+ return true
+ }
+ */
+
+ // MARK: - Navigation
+
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
+ // Get the new view controller using segue.destinationViewController.
+ // Pass the selected object to the new view controller.
+
if segue.identifier == "MeetingRoomSegue" {
- guard let destination = segue.destinationViewController as? MeetingRoomsListController, selectedIndex = self.tableView.indexPathForSelectedRow?.row , service = branch?.services?[selectedIndex] else {
+ guard let destination = segue.destination as? MeetingRoomListViewController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row, let service = branch?.services?[selectedIndex] else {
return
}
destination.service = service
}
}
+
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift
index bead065..ea8bc03 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift
@@ -2,39 +2,40 @@
// TintColorViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 20..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
-enum TintColor:Int {
- case Blue=0, Red, Green, Purple
+enum TintColor: Int {
+ case Blue = 0, Red, Green, Purple
- var color:UIColor {get{
- switch self {
- case .Blue:
- return UIColor.blueColor()
- case .Red:
- return UIColor.redColor()
- case .Green:
- return UIColor.greenColor()
- case .Purple:
- return UIColor.purpleColor()
+ var color: UIColor {
+ get {
+ switch self {
+ case .Blue:
+ return UIColor.blue
+ case .Red:
+ return UIColor.red
+ case .Green:
+ return UIColor.green
+ case .Purple:
+ return UIColor.purple
+ }
}
- }}
+ }
}
+
let TintColorKey = "TintColor"
-func applyTintColor(color:UIColor){
- guard let window = UIApplication.sharedApplication().keyWindow else {
+func applyTintColor(_ color: UIColor) {
+ guard let window = UIApplication.shared.keyWindow else {
return
}
window.tintColor = color
}
-
class TintColorViewController: UIViewController {
-
@IBOutlet weak var tintColorSegment: UISegmentedControl!
override func viewDidLoad() {
@@ -42,7 +43,7 @@ class TintColorViewController: UIViewController {
// Do any additional setup after loading the view.
- let userDefaultColor = NSUserDefaults.standardUserDefaults().integerForKey(TintColorKey)
+ let userDefaultColor = UserDefaults.standard.integer(forKey: TintColorKey)
self.tintColorSegment.selectedSegmentIndex = userDefaultColor
}
@@ -51,22 +52,20 @@ class TintColorViewController: UIViewController {
// Dispose of any resources that can be recreated.
}
- @IBAction func tintColorChanged(sender: AnyObject) {
+ @IBAction func tintColorChanged(_ sender: Any) {
let selectedIndex = self.tintColorSegment.selectedSegmentIndex
- NSUserDefaults.standardUserDefaults().setInteger(selectedIndex, forKey: TintColorKey)
+ UserDefaults.standard.set(selectedIndex, forKey: TintColorKey)
guard let changedColor = TintColor(rawValue: selectedIndex)?.color else {
return
}
applyTintColor(changedColor)
}
-
-
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ViewController.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ViewController.swift
new file mode 100644
index 0000000..31cb94e
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/ViewController.swift
@@ -0,0 +1,25 @@
+//
+// ViewController.swift
+// MeetingRoomsDynamic
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/Info.plist b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/MeetingRoomsDynamicTests.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/MeetingRoomsDynamicTests.swift
new file mode 100644
index 0000000..554e954
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicTests/MeetingRoomsDynamicTests.swift
@@ -0,0 +1,36 @@
+//
+// MeetingRoomsDynamicTests.swift
+// MeetingRoomsDynamicTests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+@testable import MeetingRoomsDynamic
+
+class MeetingRoomsDynamicTests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+ func testPerformanceExample() {
+ // This is an example of a performance test case.
+ self.measure {
+ // Put the code you want to measure the time of here.
+ }
+ }
+
+}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/Info.plist b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/MeetingRoomsDynamicUITests.swift b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/MeetingRoomsDynamicUITests.swift
new file mode 100644
index 0000000..c2bf298
--- /dev/null
+++ b/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamicUITests/MeetingRoomsDynamicUITests.swift
@@ -0,0 +1,36 @@
+//
+// MeetingRoomsDynamicUITests.swift
+// MeetingRoomsDynamicUITests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+
+class MeetingRoomsDynamicUITests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ continueAfterFailure = false
+ // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
+ XCUIApplication().launch()
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+}
diff --git a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift b/SampleCodes/MeetingRoomsDynamic/RoomInfoViewController.swift
similarity index 58%
rename from SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift
rename to SampleCodes/MeetingRoomsDynamic/RoomInfoViewController.swift
index c9c33b9..7a42590 100644
--- a/SampleCodes/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift
+++ b/SampleCodes/MeetingRoomsDynamic/RoomInfoViewController.swift
@@ -2,8 +2,8 @@
// RoomInfoViewController.swift
// MeetingRoomsDynamic
//
-// Created by Lingostar on 2016. 4. 16..
-// Copyright © 2016년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
@@ -17,34 +17,32 @@ class RoomInfoViewController: UITableViewController {
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem()
+ // self.navigationItem.rightBarButtonItem = self.editButtonItem
}
-
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
- @IBAction func dismissModal(sender: AnyObject) {
- self.dismissViewControllerAnimated(true, completion: nil)
-}
-
+ @IBAction func modalDismiss(_ sender: Any) {
+ self.dismiss(animated: true, completion: nil)
+ }
// MARK: - Table view data source
- /*
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
+/*
+ override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 0
}
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 0
- }*/
-
+ }
+*/
/*
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
+ override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
@@ -54,7 +52,7 @@ class RoomInfoViewController: UITableViewController {
/*
// Override to support conditional editing of the table view.
- override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
@@ -62,11 +60,11 @@ class RoomInfoViewController: UITableViewController {
/*
// Override to support editing the table view.
- override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
- if editingStyle == .Delete {
+ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
+ if editingStyle == .delete {
// Delete the row from the data source
- tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
- } else if editingStyle == .Insert {
+ tableView.deleteRows(at: [indexPath], with: .fade)
+ } else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
@@ -74,14 +72,14 @@ class RoomInfoViewController: UITableViewController {
/*
// Override to support rearranging the table view.
- override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
+ override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
}
*/
/*
// Override to support conditional rearranging of the table view.
- override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
+ override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
@@ -91,7 +89,7 @@ class RoomInfoViewController: UITableViewController {
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
diff --git a/SampleCodes/MeetingRoomsDynamic/building.png b/SampleCodes/MeetingRoomsDynamic/building.png
deleted file mode 100644
index 6b1aec0..0000000
Binary files a/SampleCodes/MeetingRoomsDynamic/building.png and /dev/null differ
diff --git a/SampleCodes/MeetingRoomsDynamic/equipment.png b/SampleCodes/MeetingRoomsDynamic/equipment.png
deleted file mode 100644
index b9132b8..0000000
Binary files a/SampleCodes/MeetingRoomsDynamic/equipment.png and /dev/null differ
diff --git a/SampleCodes/MeetingRoomsDynamic/location.png b/SampleCodes/MeetingRoomsDynamic/location.png
deleted file mode 100644
index 064332f..0000000
Binary files a/SampleCodes/MeetingRoomsDynamic/location.png and /dev/null differ
diff --git a/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj
index f11efb9..3e91bfc 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj
+++ b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj
@@ -3,31 +3,70 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
- 2C99854A1C224D6000FB4C4B /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9985491C224D6000FB4C4B /* Money.swift */; };
- 2C9AD9EF1C214348004D41FE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9AD9EE1C214348004D41FE /* AppDelegate.swift */; };
- 2C9AD9F11C214348004D41FE /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9AD9F01C214348004D41FE /* ViewController.swift */; };
- 2C9AD9F41C214348004D41FE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9AD9F21C214348004D41FE /* Main.storyboard */; };
- 2C9AD9F61C214348004D41FE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C9AD9F51C214348004D41FE /* Assets.xcassets */; };
- 2C9AD9F91C214348004D41FE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9AD9F71C214348004D41FE /* LaunchScreen.storyboard */; };
+ B2F7D82A1FB06F3B001340FA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F7D8291FB06F3B001340FA /* AppDelegate.swift */; };
+ B2F7D82C1FB06F3B001340FA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F7D82B1FB06F3B001340FA /* ViewController.swift */; };
+ B2F7D82F1FB06F3B001340FA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2F7D82D1FB06F3B001340FA /* Main.storyboard */; };
+ B2F7D8311FB06F3B001340FA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F7D8301FB06F3B001340FA /* Assets.xcassets */; };
+ B2F7D8341FB06F3B001340FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2F7D8321FB06F3B001340FA /* LaunchScreen.storyboard */; };
+ B2F7D83F1FB06F3B001340FA /* MoneyConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F7D83E1FB06F3B001340FA /* MoneyConverterTests.swift */; };
+ B2F7D84A1FB06F3B001340FA /* MoneyConverterUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F7D8491FB06F3B001340FA /* MoneyConverterUITests.swift */; };
+ B2F7D8581FB07346001340FA /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F7D8571FB07346001340FA /* Money.swift */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ B2F7D83B1FB06F3B001340FA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2F7D81E1FB06F3B001340FA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2F7D8251FB06F3B001340FA;
+ remoteInfo = MoneyConverter;
+ };
+ B2F7D8461FB06F3B001340FA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B2F7D81E1FB06F3B001340FA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = B2F7D8251FB06F3B001340FA;
+ remoteInfo = MoneyConverter;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXFileReference section */
- 2C9985491C224D6000FB4C4B /* Money.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; };
- 2C9AD9EB1C214347004D41FE /* MoneyConverter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MoneyConverter.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 2C9AD9EE1C214348004D41FE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 2C9AD9F01C214348004D41FE /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
- 2C9AD9F31C214348004D41FE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 2C9AD9F51C214348004D41FE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 2C9AD9F81C214348004D41FE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 2C9AD9FA1C214348004D41FE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2F7D8261FB06F3B001340FA /* MoneyConverter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MoneyConverter.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2F7D8291FB06F3B001340FA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ B2F7D82B1FB06F3B001340FA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ B2F7D82E1FB06F3B001340FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ B2F7D8301FB06F3B001340FA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ B2F7D8331FB06F3B001340FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ B2F7D8351FB06F3B001340FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2F7D83A1FB06F3B001340FA /* MoneyConverterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MoneyConverterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2F7D83E1FB06F3B001340FA /* MoneyConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoneyConverterTests.swift; sourceTree = ""; };
+ B2F7D8401FB06F3B001340FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2F7D8451FB06F3B001340FA /* MoneyConverterUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MoneyConverterUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ B2F7D8491FB06F3B001340FA /* MoneyConverterUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoneyConverterUITests.swift; sourceTree = ""; };
+ B2F7D84B1FB06F3B001340FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ B2F7D8571FB07346001340FA /* Money.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 2C9AD9E81C214347004D41FE /* Frameworks */ = {
+ B2F7D8231FB06F3B001340FA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8371FB06F3B001340FA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8421FB06F3B001340FA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -37,46 +76,68 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 2C9AD9E21C214347004D41FE = {
+ B2F7D81D1FB06F3B001340FA = {
isa = PBXGroup;
children = (
- 2C9AD9ED1C214348004D41FE /* MoneyConverter */,
- 2C9AD9EC1C214347004D41FE /* Products */,
+ B2F7D8281FB06F3B001340FA /* MoneyConverter */,
+ B2F7D83D1FB06F3B001340FA /* MoneyConverterTests */,
+ B2F7D8481FB06F3B001340FA /* MoneyConverterUITests */,
+ B2F7D8271FB06F3B001340FA /* Products */,
);
sourceTree = "";
};
- 2C9AD9EC1C214347004D41FE /* Products */ = {
+ B2F7D8271FB06F3B001340FA /* Products */ = {
isa = PBXGroup;
children = (
- 2C9AD9EB1C214347004D41FE /* MoneyConverter.app */,
+ B2F7D8261FB06F3B001340FA /* MoneyConverter.app */,
+ B2F7D83A1FB06F3B001340FA /* MoneyConverterTests.xctest */,
+ B2F7D8451FB06F3B001340FA /* MoneyConverterUITests.xctest */,
);
name = Products;
sourceTree = "";
};
- 2C9AD9ED1C214348004D41FE /* MoneyConverter */ = {
+ B2F7D8281FB06F3B001340FA /* MoneyConverter */ = {
isa = PBXGroup;
children = (
- 2C9AD9EE1C214348004D41FE /* AppDelegate.swift */,
- 2C9AD9F01C214348004D41FE /* ViewController.swift */,
- 2C9985491C224D6000FB4C4B /* Money.swift */,
- 2C9AD9F21C214348004D41FE /* Main.storyboard */,
- 2C9AD9F51C214348004D41FE /* Assets.xcassets */,
- 2C9AD9F71C214348004D41FE /* LaunchScreen.storyboard */,
- 2C9AD9FA1C214348004D41FE /* Info.plist */,
+ B2F7D8291FB06F3B001340FA /* AppDelegate.swift */,
+ B2F7D82B1FB06F3B001340FA /* ViewController.swift */,
+ B2F7D82D1FB06F3B001340FA /* Main.storyboard */,
+ B2F7D8571FB07346001340FA /* Money.swift */,
+ B2F7D8301FB06F3B001340FA /* Assets.xcassets */,
+ B2F7D8321FB06F3B001340FA /* LaunchScreen.storyboard */,
+ B2F7D8351FB06F3B001340FA /* Info.plist */,
);
path = MoneyConverter;
sourceTree = "";
};
+ B2F7D83D1FB06F3B001340FA /* MoneyConverterTests */ = {
+ isa = PBXGroup;
+ children = (
+ B2F7D83E1FB06F3B001340FA /* MoneyConverterTests.swift */,
+ B2F7D8401FB06F3B001340FA /* Info.plist */,
+ );
+ path = MoneyConverterTests;
+ sourceTree = "";
+ };
+ B2F7D8481FB06F3B001340FA /* MoneyConverterUITests */ = {
+ isa = PBXGroup;
+ children = (
+ B2F7D8491FB06F3B001340FA /* MoneyConverterUITests.swift */,
+ B2F7D84B1FB06F3B001340FA /* Info.plist */,
+ );
+ path = MoneyConverterUITests;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 2C9AD9EA1C214347004D41FE /* MoneyConverter */ = {
+ B2F7D8251FB06F3B001340FA /* MoneyConverter */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 2C9AD9FD1C214348004D41FE /* Build configuration list for PBXNativeTarget "MoneyConverter" */;
+ buildConfigurationList = B2F7D84E1FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverter" */;
buildPhases = (
- 2C9AD9E71C214347004D41FE /* Sources */,
- 2C9AD9E81C214347004D41FE /* Frameworks */,
- 2C9AD9E91C214347004D41FE /* Resources */,
+ B2F7D8221FB06F3B001340FA /* Sources */,
+ B2F7D8231FB06F3B001340FA /* Frameworks */,
+ B2F7D8241FB06F3B001340FA /* Resources */,
);
buildRules = (
);
@@ -84,81 +145,173 @@
);
name = MoneyConverter;
productName = MoneyConverter;
- productReference = 2C9AD9EB1C214347004D41FE /* MoneyConverter.app */;
+ productReference = B2F7D8261FB06F3B001340FA /* MoneyConverter.app */;
productType = "com.apple.product-type.application";
};
+ B2F7D8391FB06F3B001340FA /* MoneyConverterTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2F7D8511FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverterTests" */;
+ buildPhases = (
+ B2F7D8361FB06F3B001340FA /* Sources */,
+ B2F7D8371FB06F3B001340FA /* Frameworks */,
+ B2F7D8381FB06F3B001340FA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2F7D83C1FB06F3B001340FA /* PBXTargetDependency */,
+ );
+ name = MoneyConverterTests;
+ productName = MoneyConverterTests;
+ productReference = B2F7D83A1FB06F3B001340FA /* MoneyConverterTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ B2F7D8441FB06F3B001340FA /* MoneyConverterUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = B2F7D8541FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverterUITests" */;
+ buildPhases = (
+ B2F7D8411FB06F3B001340FA /* Sources */,
+ B2F7D8421FB06F3B001340FA /* Frameworks */,
+ B2F7D8431FB06F3B001340FA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ B2F7D8471FB06F3B001340FA /* PBXTargetDependency */,
+ );
+ name = MoneyConverterUITests;
+ productName = MoneyConverterUITests;
+ productReference = B2F7D8451FB06F3B001340FA /* MoneyConverterUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
- 2C9AD9E31C214347004D41FE /* Project object */ = {
+ B2F7D81E1FB06F3B001340FA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastSwiftUpdateCheck = 0710;
- LastUpgradeCheck = 0710;
- ORGANIZATIONNAME = CodersHigh;
+ LastSwiftUpdateCheck = 0910;
+ LastUpgradeCheck = 0910;
+ ORGANIZATIONNAME = Gompu;
TargetAttributes = {
- 2C9AD9EA1C214347004D41FE = {
- CreatedOnToolsVersion = 7.1;
+ B2F7D8251FB06F3B001340FA = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ };
+ B2F7D8391FB06F3B001340FA = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2F7D8251FB06F3B001340FA;
+ };
+ B2F7D8441FB06F3B001340FA = {
+ CreatedOnToolsVersion = 9.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = B2F7D8251FB06F3B001340FA;
};
};
};
- buildConfigurationList = 2C9AD9E61C214347004D41FE /* Build configuration list for PBXProject "MoneyConverter" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ buildConfigurationList = B2F7D8211FB06F3B001340FA /* Build configuration list for PBXProject "MoneyConverter" */;
+ compatibilityVersion = "Xcode 8.0";
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
- mainGroup = 2C9AD9E21C214347004D41FE;
- productRefGroup = 2C9AD9EC1C214347004D41FE /* Products */;
+ mainGroup = B2F7D81D1FB06F3B001340FA;
+ productRefGroup = B2F7D8271FB06F3B001340FA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
- 2C9AD9EA1C214347004D41FE /* MoneyConverter */,
+ B2F7D8251FB06F3B001340FA /* MoneyConverter */,
+ B2F7D8391FB06F3B001340FA /* MoneyConverterTests */,
+ B2F7D8441FB06F3B001340FA /* MoneyConverterUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 2C9AD9E91C214347004D41FE /* Resources */ = {
+ B2F7D8241FB06F3B001340FA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2F7D8341FB06F3B001340FA /* LaunchScreen.storyboard in Resources */,
+ B2F7D8311FB06F3B001340FA /* Assets.xcassets in Resources */,
+ B2F7D82F1FB06F3B001340FA /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8381FB06F3B001340FA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8431FB06F3B001340FA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2C9AD9F91C214348004D41FE /* LaunchScreen.storyboard in Resources */,
- 2C9AD9F61C214348004D41FE /* Assets.xcassets in Resources */,
- 2C9AD9F41C214348004D41FE /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 2C9AD9E71C214347004D41FE /* Sources */ = {
+ B2F7D8221FB06F3B001340FA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2F7D8581FB07346001340FA /* Money.swift in Sources */,
+ B2F7D82C1FB06F3B001340FA /* ViewController.swift in Sources */,
+ B2F7D82A1FB06F3B001340FA /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8361FB06F3B001340FA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 2C99854A1C224D6000FB4C4B /* Money.swift in Sources */,
- 2C9AD9F11C214348004D41FE /* ViewController.swift in Sources */,
- 2C9AD9EF1C214348004D41FE /* AppDelegate.swift in Sources */,
+ B2F7D83F1FB06F3B001340FA /* MoneyConverterTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B2F7D8411FB06F3B001340FA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B2F7D84A1FB06F3B001340FA /* MoneyConverterUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ B2F7D83C1FB06F3B001340FA /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2F7D8251FB06F3B001340FA /* MoneyConverter */;
+ targetProxy = B2F7D83B1FB06F3B001340FA /* PBXContainerItemProxy */;
+ };
+ B2F7D8471FB06F3B001340FA /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = B2F7D8251FB06F3B001340FA /* MoneyConverter */;
+ targetProxy = B2F7D8461FB06F3B001340FA /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
- 2C9AD9F21C214348004D41FE /* Main.storyboard */ = {
+ B2F7D82D1FB06F3B001340FA /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C9AD9F31C214348004D41FE /* Base */,
+ B2F7D82E1FB06F3B001340FA /* Base */,
);
name = Main.storyboard;
sourceTree = "";
};
- 2C9AD9F71C214348004D41FE /* LaunchScreen.storyboard */ = {
+ B2F7D8321FB06F3B001340FA /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
- 2C9AD9F81C214348004D41FE /* Base */,
+ B2F7D8331FB06F3B001340FA /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "";
@@ -166,29 +319,41 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
- 2C9AD9FB1C214348004D41FE /* Debug */ = {
+ B2F7D84C1FB06F3B001340FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -202,38 +367,50 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C9AD9FC1C214348004D41FE /* Release */ = {
+ B2F7D84D1FB06F3B001340FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
@@ -241,58 +418,144 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.1;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
- 2C9AD9FE1C214348004D41FE /* Debug */ = {
+ B2F7D84F1FB06F3B001340FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MoneyConverter/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MoneyConverter;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverter;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 2C9AD9FF1C214348004D41FE /* Release */ = {
+ B2F7D8501FB06F3B001340FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = MoneyConverter/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MoneyConverter;
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverter;
PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ B2F7D8521FB06F3B001340FA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MoneyConverterTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverterTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoneyConverter.app/MoneyConverter";
+ };
+ name = Debug;
+ };
+ B2F7D8531FB06F3B001340FA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MoneyConverterTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverterTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoneyConverter.app/MoneyConverter";
+ };
+ name = Release;
+ };
+ B2F7D8551FB06F3B001340FA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MoneyConverterUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverterUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MoneyConverter;
+ };
+ name = Debug;
+ };
+ B2F7D8561FB06F3B001340FA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ INFOPLIST_FILE = MoneyConverterUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = Gompu.MoneyConverterUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 4.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = MoneyConverter;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 2C9AD9E61C214347004D41FE /* Build configuration list for PBXProject "MoneyConverter" */ = {
+ B2F7D8211FB06F3B001340FA /* Build configuration list for PBXProject "MoneyConverter" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2F7D84C1FB06F3B001340FA /* Debug */,
+ B2F7D84D1FB06F3B001340FA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2F7D84E1FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverter" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B2F7D84F1FB06F3B001340FA /* Debug */,
+ B2F7D8501FB06F3B001340FA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ B2F7D8511FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverterTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C9AD9FB1C214348004D41FE /* Debug */,
- 2C9AD9FC1C214348004D41FE /* Release */,
+ B2F7D8521FB06F3B001340FA /* Debug */,
+ B2F7D8531FB06F3B001340FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 2C9AD9FD1C214348004D41FE /* Build configuration list for PBXNativeTarget "MoneyConverter" */ = {
+ B2F7D8541FB06F3B001340FA /* Build configuration list for PBXNativeTarget "MoneyConverterUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 2C9AD9FE1C214348004D41FE /* Debug */,
- 2C9AD9FF1C214348004D41FE /* Release */,
+ B2F7D8551FB06F3B001340FA /* Debug */,
+ B2F7D8561FB06F3B001340FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
- rootObject = 2C9AD9E31C214347004D41FE /* Project object */;
+ rootObject = B2F7D81E1FB06F3B001340FA /* Project object */;
}
diff --git a/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..5566428
--- /dev/null
+++ b/SampleCodes/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/AppDelegate.swift b/SampleCodes/MoneyConverter/MoneyConverter/AppDelegate.swift
index 2217838..6bfaedd 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/AppDelegate.swift
+++ b/SampleCodes/MoneyConverter/MoneyConverter/AppDelegate.swift
@@ -2,8 +2,8 @@
// AppDelegate.swift
// MoneyConverter
//
-// Created by Lingostar on 2015. 12. 16..
-// Copyright © 2015년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
@@ -14,37 +14,30 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
- func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
-
-
-
-
-
-
-
return true
}
- func applicationWillResignActive(application: UIApplication) {
+ func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
- func applicationDidEnterBackground(application: UIApplication) {
+ func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- func applicationWillEnterForeground(application: UIApplication) {
- // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
- func applicationDidBecomeActive(application: UIApplication) {
+ func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- func applicationWillTerminate(application: UIApplication) {
+ func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json b/SampleCodes/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json
index 36d2c80..1d060ed 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/SampleCodes/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,5 +1,15 @@
{
"images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
{
"idiom" : "iphone",
"size" : "29x29",
@@ -30,6 +40,16 @@
"size" : "60x60",
"scale" : "3x"
},
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
{
"idiom" : "ipad",
"size" : "29x29",
@@ -59,6 +79,11 @@
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
}
],
"info" : {
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard b/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard
index 2e721e1..f83f6fd 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard
+++ b/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard
@@ -1,22 +1,20 @@
-
+
-
+
+
+
-
-
-
-
-
+
-
-
+
+
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard b/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard
index 89f6126..26c6e8a 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard
+++ b/SampleCodes/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard
@@ -1,41 +1,45 @@
-
-
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -43,39 +47,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
-
+
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/Info.plist b/SampleCodes/MoneyConverter/MoneyConverter/Info.plist
index 40c6215..16be3b6 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/Info.plist
+++ b/SampleCodes/MoneyConverter/MoneyConverter/Info.plist
@@ -3,7 +3,7 @@
CFBundleDevelopmentRegion
- en
+ $(DEVELOPMENT_LANGUAGE)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -16,8 +16,6 @@
APPL
CFBundleShortVersionString
1.0
- CFBundleSignature
- ????
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/Money.swift b/SampleCodes/MoneyConverter/MoneyConverter/Money.swift
index 169ee64..7cc75d3 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/Money.swift
+++ b/SampleCodes/MoneyConverter/MoneyConverter/Money.swift
@@ -2,59 +2,53 @@
// Money.swift
// MoneyConverter
//
-// Created by Lingostar on 2015. 12. 17..
-// Copyright © 2015년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import Foundation
-import MapKit
+
enum Currency:Int {
case USD = 0, KRW, JPY, EUR
- var symbol:String {
+ var ratio: Double {
get {
switch self {
- case .USD : return "$"
- case .KRW : return "₩"
- case .JPY : return "¥"
- case .EUR : return "€"
+ case .USD: return 1.0
+ case .KRW: return 1178.5
+ case .JPY: return 122.45
+ case .EUR: return 0.92
}
}
}
- var ratio:Double {
+ var symbol: String {
get {
switch self {
- case .USD : return 1.0
- case .KRW : return 1178.5
- case .JPY : return 122.45
- case .EUR : return 0.92
+ case .USD: return "$"
+ case .KRW: return "₩"
+ case .JPY: return "¥"
+ case .EUR: return "€"
}
}
}
}
struct Money {
-
- //var location:CLLocationCoordinate2D
-
var usdollar = 0.0
-
- init(_ _usdollar:Double){
+
+ init(_ _usdollar: Double) {
usdollar = _usdollar
}
- init(_ amount:Double, currency:Currency){
+ init(_ amount: Double, currency: Currency) {
usdollar = amount / currency.ratio
}
-
- func valueInCurrency(currency:Currency) -> String {
- return "\(currency.symbol) " + "\(usdollar*currency.ratio)"
+
+ func valueInCurrency(currency: Currency) -> String {
+ return "\(currency.symbol)" + "\(usdollar * currency.ratio)"
}
}
-
-let money = Money(120.0)
-let koreanIncome = Money(500_000 , currency:.KRW)
-
-
+let myMoney = Money(120)
+let incomeInKRW = Money(350_000, currency: .KRW)
diff --git a/SampleCodes/MoneyConverter/MoneyConverter/ViewController.swift b/SampleCodes/MoneyConverter/MoneyConverter/ViewController.swift
index 659723e..09f814c 100644
--- a/SampleCodes/MoneyConverter/MoneyConverter/ViewController.swift
+++ b/SampleCodes/MoneyConverter/MoneyConverter/ViewController.swift
@@ -2,19 +2,17 @@
// ViewController.swift
// MoneyConverter
//
-// Created by Lingostar on 2015. 12. 16..
-// Copyright © 2015년 CodersHigh. All rights reserved.
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
-
- @IBOutlet weak var currencySegment: UISegmentedControl!
- @IBOutlet weak var sourceMoneyField: UITextField!
+
@IBOutlet weak var targetMoneyLabel: UILabel!
-
-
+ @IBOutlet weak var sourceMoneyField: UITextField!
+ @IBOutlet weak var currencySegment: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
@@ -25,43 +23,27 @@ class ViewController: UIViewController {
// Dispose of any resources that can be recreated.
}
- @IBAction func convertMoney(sender: AnyObject) {
- guard let sourceCurrecy = Currency(rawValue:currencySegment.selectedSegmentIndex) else {
+ @IBAction func ConvertMoney(_ sender: Any) {
+ guard let sourceCurrency = Currency(rawValue: currencySegment.selectedSegmentIndex) else {
print("Source Currency Error")
return
- } // if let 의 확장판. if let을 썼을때 indent 불편을 없앰.
-
+ }
+
guard let sourceAmount = Double(sourceMoneyField.text!) else {
targetMoneyLabel.text = "Error"
return
}
- let sourceMoney = Money(sourceAmount, currency: sourceCurrecy)
+ let sourceMoney = Money(sourceAmount, currency: sourceCurrency)
var targetMoneyString = ""
- for (var i=0 ; i < 4 ; i++){
- targetMoneyString += sourceMoney.valueInCurrency(Currency.init(rawValue: i)!)
+ for i in 0...3 {
+ targetMoneyString += sourceMoney.valueInCurrency(currency: Currency.init(rawValue: i)!)
targetMoneyString += "\r\n"
}
targetMoneyLabel.text = targetMoneyString
-
- /*if let sourceCurrecy = Currency(rawValue:currencySegment.selectedSegmentIndex) {
-
- if let sourceAmount = Double(sourceMoneyField.text!) {
-
- let sourceMoney = Money(sourceAmount, currency: sourceCurrecy)
-
- var targetMoneyString = ""
- for (var i=0 ; i < 4 ; i++){
- targetMoneyString += sourceMoney.valueInCurrency(Currency.init(rawValue: i)!)
- targetMoneyString += "\r\n"
- }
-
- targetMoneyLabel.text = targetMoneyString
- }
- }*/
}
-
+
}
diff --git a/SampleCodes/MoneyConverter/MoneyConverterTests/Info.plist b/SampleCodes/MoneyConverter/MoneyConverterTests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MoneyConverter/MoneyConverterTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MoneyConverter/MoneyConverterTests/MoneyConverterTests.swift b/SampleCodes/MoneyConverter/MoneyConverterTests/MoneyConverterTests.swift
new file mode 100644
index 0000000..d468c9a
--- /dev/null
+++ b/SampleCodes/MoneyConverter/MoneyConverterTests/MoneyConverterTests.swift
@@ -0,0 +1,36 @@
+//
+// MoneyConverterTests.swift
+// MoneyConverterTests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+@testable import MoneyConverter
+
+class MoneyConverterTests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+ func testPerformanceExample() {
+ // This is an example of a performance test case.
+ self.measure {
+ // Put the code you want to measure the time of here.
+ }
+ }
+
+}
diff --git a/SampleCodes/MoneyConverter/MoneyConverterUITests/Info.plist b/SampleCodes/MoneyConverter/MoneyConverterUITests/Info.plist
new file mode 100644
index 0000000..6c40a6c
--- /dev/null
+++ b/SampleCodes/MoneyConverter/MoneyConverterUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/SampleCodes/MoneyConverter/MoneyConverterUITests/MoneyConverterUITests.swift b/SampleCodes/MoneyConverter/MoneyConverterUITests/MoneyConverterUITests.swift
new file mode 100644
index 0000000..272ab89
--- /dev/null
+++ b/SampleCodes/MoneyConverter/MoneyConverterUITests/MoneyConverterUITests.swift
@@ -0,0 +1,36 @@
+//
+// MoneyConverterUITests.swift
+// MoneyConverterUITests
+//
+// Created by RUBIS on 2017. 11. 6..
+// Copyright © 2017년 Gompu. All rights reserved.
+//
+
+import XCTest
+
+class MoneyConverterUITests: XCTestCase {
+
+ override func setUp() {
+ super.setUp()
+
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ continueAfterFailure = false
+ // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
+ XCUIApplication().launch()
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testExample() {
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+}
diff --git a/completed_giyeonKim.PNG b/completed_giyeonKim.PNG
new file mode 100644
index 0000000..8257db7
Binary files /dev/null and b/completed_giyeonKim.PNG differ