create a project
add views
define layouts
integrate functions
connect ui to code
respond to events
function practice
func firstCharacter(of word: String) -> Character { return word[word.startIndex] } firstCharacter(of: "Mom")
import Fundation func placeFirstLetterLast(myString: String){ }
func placeFirstLetterLast (myString: String) -> String { var myString = myString myString.append(firstCharacter(of: myString)) return myString } func shortNameFromName(name: String) -> String { let lowercaseName = name.lowercaseString let vowelSet = CharacterSet(charactersIn: "aeiou") } shortNameFromName(name: "Nate") // shortNameFromName(name: "Talia") //
func lyricsForName(lyricsTemplate: String, fullName: String) -> String { let shortName = shortNameForName(name: fullName) let lyrics = lyricsTemplate .replacingOccurrences(of: "<FULL_NAME>", with: fullName) .replacingOccurrences(of: "<SHORT_NAME>", with: shortName) return lyrics }
functions
The function print, min, max, and abs are a few examples of global functions. Check out a complete list of Swift’s global functions.
print("I'm a global function!") var initialPrice = 50 var bestOffer = 45 var finalPrice = min(bestOffer, initialPrice)
Anatomy of a function
func functionName (_ parameterName: parameterType) -> returnType { statements to execute return object }
func sumOfStrings(_ aBunchOfStrings: [String]) -> Int { let array = aBunchOfStrings var sum = 0 for string in array { if Int(string) != nil { let int intToAdd = Int(string)! sum += intToAdd } } return sum }
func reverse(_ string: String) -> String { var reversedString = "" for character in string.characters { reversedString = "\(character)" + reversedString } return reversedString }
func warmUp(temperature: Int) -> Int { return temperature + 10 } func firstChar(word: String) -> Character { return word[word.startIndex] } func concatenate(firstString: String, secondString secondString){ return firstString + secondString } func warmUp(temperature: Int) -> Int { return temperature + 10 } func firstCharacter(word: String) -> Character { return word[word.startIndex] } func concatenate(firstString: String, secondString: String)-> String { return firstString + secondString }
type of variable
var lightSwitchOn: Bool = true var dimmer: Int = 7 var dimmerWithDecimals: Float = 3.14 var veryPreciseDimmer: Double = 3.14159265359 print(type(of: lightSwitchOn)) print(type(of: veryPreciseDimmer))
Bool Double
Double, Bool, String, Float
use let to declare a constant when we expect its value to remain the same
we expect let not change
let encouragement = "You can do it!" var personalizedEncouragement = "You can do it, Stephanie!" personalizedEncouragement = personalizedEncouragement.replacingOccurrences(of: "Stephanie", with: "Ryder") let birthYear = 2008 var currentYear = 2016 var age = currentYear - birthYear age = currentYear - birthYear
Method
var word = "fortunate" word.contains("tuna") var password = "Mary had a little loris" var newPassword = password.replacingOccurences(of: "a" with "A")
import Foundation var didYouKnowString = "Did you know that the Swift String class comes with lots of useful methods?" var whisperString = "pass" + ", " + "\(didYouKnowString.lowercased())" var shoutString = "TODO: Make the shoutString here!"
import Foundation var forwardString = "stressed" var lottaLikes = "If like, you wanna learn Swift like, you should build lots of small apps, cuz it's like, a good way to practice."
string interpolation
import Glibc var nounArray = ["puppy", "laptop", "ocean", "app", "cow", "skateboard", "developer", "coffee", "moon"] var index1 = Int(random() % 9) var index2 = Int(random() % 9) var sentence = "The \(nounarray[6]) spilled her \(nounArray[7])." var sillySentence = "The \(nounArray[index1]) jumped over the \(nounArray[index2])." print(sentence) print(sillySentence)
var eString = "Meet me in St. Louis" for character in eString.characters { if character == "e" { print("found an e!") } else { } }
var eString = "Meet me in St. Louis" for character in eString.characters { if character == "e" { print("found an e!") } else { } } var theTruth = "Mony can buy me love." var characterCount = theTruth.characters.count var forwardString = "spoons" var charactersReversed = forwardString.characters.reversed() var backwardsString = String(charactersReversed) print(backwardsString)
found an e! found an e! found an e! snoops
swift string
var exitement: Character = "!" var myFirstString: String = "In wine, there is wisdom." var mySecondString: String = "In water, there is Giardia." var characterPoorString = "" var stringWithPotential = String() var theTruth = myFirstString + " " + mySecondString print(theTruth)
// Plain string var doggyDiet = "Mia eats 10lbs of dog food per month" // define variables var dogName = "Mia" var lbsPerMonth: Double = 10 // Same string, this time with the variable inserted doggyDiet = "\(dogName) eats \(lbsPerMonth)lbs of dog food per month" print(doggyDiet) let kilosInALb = 0.45 lbsPerMonth = 25 var metricDoggyDiet = "\(dogName) eats \(kilosInAlb * lbsPerMonth)kilos of dog food per month" print(metricDoggyDiet) dogName = "Mia" lbsPerMonth = 10 metricDoggyDiet = "\(dogName) eats \(kilosInALb * lbsPerMonth)kilos of dog food per month" print(metricDoggyDiet)
sandbox
print((200 * 7)/2) print("Hello from the ios team")
variable function
var name = "jack" var introduction = "I'm \(name)," var nobleGoal = "skill up" var yourDream = " and I used to dream of building an app that could \(nobleGoal)." print(introduction + yourDream)
try again
var language = "swift" var epiphany = " Then, one day, I discovered \(language)." print(epiphany)
concatenate variable each other
var language = "java" var nobleGoal = "AR" var condition = "Then I knew that, programming in \(language). " var result = "I could make my dream of \(nobleGoal) a realilty." var end = condition + result print(end)
style
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:layout_marginTop="16dp" android:text="@string/toppings" style="@style/CustomText" android:textAllCaps="true" />
Themes of App
https://material.io/guidelines/style/color.html
-color primary
-color primary dark
-color account
email intent android
commont intent
https://developer.android.com/guide/components/intents-common.html
public void addEvent(String title, String location, Calendar begin, Calendar end) { Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI) .putExtra(Events.TITLE, title) .putExtra(Events.EVENT_LOCATION, location) .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin) .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
public void composeEmail(String[] addresses, String subject) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:")); // only email apps should handle this intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
support localization
https://developer.android.com/guide/topics/resources/localization.html