The file
Date.swift
in this app creates a
Swift
class
named
Date
.
The class demonstrates the most common features of a class:
stored
properties,
computed
properties,
and
property
observers;
instance
methods
and
type
methods.
We are inventing this new class
Date
only to demonstrate how to create a class.
Our class
Date
is not as good as Apple’s class
Date
which belongs to Apple’s
Foundation
framework.
For the rest of the course,
we will be using Apple’s class
Date
.
In the method
application(_:didFinishLaunchingWithOptions:)
of the class
AppDelegate
in the file
AppDelegate.swift
,
we demonstrate what our new class
Date
can do.
We create several objects of this class,
read and write their properties,
and call their methods.
We also call a type method of our new class
Date
.
This app does not write to the simulator’s screen. We’ll do that in the next app.
AppDelegate.swift
:
added code to the method
application(_:didFinishLaunchingWithOptions:)
to demonstrate class
Date
.ViewController.swift
:
unchanged.Date.swift
:
this file creates class
Date
,
which is a subclass of class
NSObject
.
An
init
method of the subclass always calls an
init
method of the superclass—after the properties of the subclass have
been initialized.
Launch Xcode.
File →
New →
Project…
Choose a template for your new project:
iOS
Application
Single View App
Next
Choose options for your new project:
Product Name: Date
Team: Mark Meretzky
Organization Name: NYU SPS (this goes in the copyright notices)
Organization Identifier: edu.nyu.sps
Bundle Identifier: edu.nyu.sps.Date
Language: Swift
Devices: iPhone
☐ Use Core Data
☐ Include Unit Tests
☐ Include UI Tests
Next
Save the project on your Mac’s Desktop.
Source Control: ☑ Create Git repository on my Mac
Create
There should now be a new folder named
Date
on your Desktop.
Since we created a Git repository,
the folder should contain a subfolder named
.git
.
To verify this,
open the Mac Terminal application and say
cd ~/Desktop pwd ls -ld Date cd Date pwd ls -l ls -la
In the upper left corner of Xcode,
select a simulator or device:
Date >
iPhone XR
Create a new Swift file named
Date.swift
with an uppercase
D
,
and a new Swift
class
in it named
Date
.
The left panel of Xcode is called the
Project Navigator.
If you don’t see the Project Navigator, select
View → Navigators → Show Project Navigator
In the Project Navigator,
click once on the yellow
Date
folder to highlight it.
File →
New →
File…
Choose a template for your new file:
iOS
Source
Swift File
Next
Save As: Date.swift
Create
The yellow
Date
folder in the
Project Navigator
should now contain a new file named
Date.swift
.
Drag
Date.swift
to a position immediately below
ViewController.swift
,
just to keep all the
.swift
files next to each other.
In the
Project Navigator,
select the new file
Date.swift
.
Edit this file in the center window of Xcode.
Also edit
AppDelegate.swift
.
The name of a Swift variable starts with a lowercase letter. The name of a Swift class starts with at least one uppercase letter. The name of a Swift class that we create starts with one uppercase letter. The name of a Swift class created by Apple starts with a pair of uppercase letters. The most common examples are:
Date > iPhone XR
print
statements should appear in the Debug Area at the bottom center of Xcode.
If you do not see the Debug Area,
bring Xcode to the front and select
A year has 12 months. Today is 10/17/2018. Today is 10/17/2018. Today is day number 17 out of 31 in month number 10. The second day of this month is 10/2/2018. Independence Day was 7/4/1776. America was one month old on 8/4/1776.
willSet
property
observer
for the
month
property of class
Date
,
change the
12
to
Date.yearLength()
.
prev
,
with no parameters.
It should be exactly like the existing method named
next
with no parameters,
except that it moves the object 1 day back in time instead of 1 day forward.
prev
,
with one
Int
parameter.
It should be exactly like the existing method named
next
with one
Int
parameter,
except that it moves the object
n
days back in time
instead of
n
days forward.
viewDidLoad
method of the
ViewController
in the
ViewController.swift
file immediately after the
“Do any additional setup”
comment.
Then run the project again.
Experiment with
yellow
and
green.
Make the
view
semi-transparent so you can see the black window behind it.
//view is a stored property of the ViewController object. view.backgroundColor = UIColor.blue; //0.0 is totally transparent, 1.0 is totally opaque view.alpha = 0.85; //or try 0.35
monthLength
method of class
Date
works,
change the
yearLength
method to the following.
class func yearLength() -> Int { let calendar: Calendar = Calendar.current; let dateComponents: DateComponents = DateComponents(); let date: Foundation.Date = calendar.date(from: dateComponents)!; let range: Range = calendar.range(of: .month, in: .year, for: date)!; return range.count; }