Live iPhone App Workshop on Thursday and 24/7 Live Chat

If you want to make an app but don’t know how to get started, tomorrow is the day for you to fill in that blank.

I will be providing a free iPhone app workshop that will show you everything you need to know to get started with Xcode and Swift . . . even if you don’t currently know what either of those words mean.

If you don’t have any coding experience . . .

If you don’t have any user interface design experience . . . 

If you think that apps are basically magic and coding can only be done by people with computer science degrees . . . 

. . .  tomorrow you will learn how to get started (the easy way!).

I LOVE working with people who have ideas but who don’t know how to get started.

It’s so INSPIRING to see real people (my students!) develop and publish apps that help populations around the world deal with things like power outages, healthy lifestyle choices, living with various disabilities, and teaching children how to read and speak . . . just to name a few.

Cute Zoo ABC by Sasha

Cute Zoo ABC by Sasha

I know technology can be intimidating—it changes frequently, leaving the uninitiated in the dust on an almost daily basis.

To bridge that gap, provide a solid foundation, and get you moving forward in your career change, Super Easy iPhone Apps is the place to start. Whether you want to switch careers or publish the next million dollar app, it’s an investment in your future.

You need to start like everyone else: learn enough technical skills to create a prototype and work with a team to execute your vision.

I’ve already helped thousands of people imagine and develop their first iPhone apps:

  • Like Bennie, who started an app to help with power outages in South Africa;
  • Or Rajee, who switched jobs from QA to iOS Developer: “I have great news...I GOT THE JOB!”
  • Or Sasha, who made Cute Zoo ABC for his 18 month old son . . . 

I hope that I can add your name to the list of people I have helped.

 I’m doing a FREE training on Thursday about making your first iPhone app (even if you are starting from zero).

I know it will be worth your time.

Register for Thursday November 19th at 2pm eastern.

This workshop is totally free—but the information that I will be sharing is potentially worth thousands of dollars if you come live, take notes, and commit to taking action.

If you are just starting to imagine app ideas, getting ready to publish your own iPhone app, or just want to up your game on your next app idea, you will walk away with actionable strategies you can use immediately.

It is really important to me that you make this small time investment in yourself and your career. It costs nothing other than an hour of your time—and could really change everything.

Register for Thursday November 19th at 2pm eastern.

I’ll see you there, live!

PS If you want to join my upcoming 24/7 live chat for people building iPhone apps, you won't want to miss this workshop.

Gmail Inbox Tabs Tutorial - How to Never Miss an Email in Your Promotions Tab

Watch the 19 second tutorial below...

Make sure you don't miss any important emails from me by doing two things right now (this also works for any other email you don't want to miss!).

  1. In Gmail: Move messages from the sender (Paul@SuperEasyApps.com) from your Promotions Inbox Tab to your Primary Inbox Tab (left-click and drag). 
  2. Add sender (Paul@SuperEasyApps.com) as a contact in your email client (i.e.: Gmail, Mail, etc.).

Using both of these methods for any email will prevent you from "losing" emails, especially important ones. If you follow these steps, you will never miss an email from me.

Watch the Quick Gmail Inbox Tab Tutorial (19 seconds)

Gmail hides emails in your Promotions Inbox Tab, this is a short video demonstrating how you can make sure you don't miss an email.

1. Go to the Promotions tab to search for missing emails.
2. Left-click and drag from the email to your Primary Inbox Tab to move it.
3. Confirm that you want all future emails to move to your Primary Inbox tab from that sender.

Additional steps

1. Click a Star on an email you want to see in your Primary Inbox
2. Add the sender (i.e.: Paul@SuperEasyApps.com) to your contacts list in Gmail, Mail, etc.

Gmail Inbox Tabs 101

Watch the full tutorial on how to never miss an email using Gmail Inbox Tabs.

  1. In Gmail: Move messages from sender (Paul@SuperEasyApps.com) from your Promotions Inbox Tab to your Primary Inbox Tab (left-click and drag). 
  2. Add sender (Paul@SuperEasyApps.com) as a contact in your email client (i.e.: Gmail, Mail, etc.).
  3. Star any email from sender (Paul@SuperEasyApps.com) to tell Gmail that the email is important and you don't want it in your Promotions Tab.
  4. Read more about it on Google's support site.

Like and share this video

Did I help you find missing emails?

  1. Click the Like button below
  2. Share this on Twitter by Tweeting this message.
     

How to remove an array of objects from a Swift 2 Array - removeObjectsInArray

removeObjectsInArray Swift Protocol Extension.png

I was working on a game project in Swift and I wanted to remove objects from an Array, only to discover that my goto method from Objective-C’s NSMutableArray (removeObjectsInArray:) didn’t exist.

Removing multiple objects from an Array takes multiple steps – when you iterate over an Array you cannot remove objects. It’s a two step process, you need to discover which objects need to be removed and then you need to iterate through that list and remove each one, one at a time.

The code has changed between Swift 1.2 and Swift 2 – I’ll include both to show the differences.

Swift 1.2 Remove Multiple Objects from an Array

You can start by creating an array of objects – add to the end with append() or insert() at a specific index.

Next you will need to search for something in your Swift Array – for this example you’ll look for words with a specific letter. 

Lastly you’ll need to remove each word that contains the letter one at a time, outside of your first loop.

// Swift 1.2
var wordArray = ["Apple", "Carrot", "Peanut Butter"]
wordArray.append("Hummus")
wordArray.insert("Greek Salad", atIndex: 0)

// Find the objects to remove
var wordsToDelete: [String] = [String]()
for word in wordArray {
    if contains(word.lowercaseString, "p") {
        wordsToDelete.append(word)
    }
}

// Find the index and remove each object
for word in wordsToDelete {
    if let index = find(wordArray, word) {
        wordArray.removeAtIndex(index)
    }
} 

Swift 2 Remove Multiple Objects from an Array

Swift 2 changes the contains() function to a contains() method using Protocol Extensions and since we’re working with Swift 2 Strings – the character property needs to be used.

The global find() function is now replaced by the new indexOf() method on Array (technically CollectionType).

// Swift 2
var wordArray = ["Apple", "Carrot", "Peanut Butter"]
wordArray.append("Hummus")
wordArray.insert("Greek Salad", atIndex: 0)

// Find the objects to remove
var wordsToDelete: [String] = [String]()
for word in wordArray {
    if word.lowercaseString.characters.contains("p") {
        wordsToDelete.append(word)
    }
}

// Find the index and remove each object
for word in wordsToDelete {
    if let index = wordArray.indexOf(word) {
        wordArray.removeAtIndex(index)
    }
} 

 

Swift 2 Array Protocol Extension removeObjectsInArray

With the basics of removing objects from an Array you can take it a step further to get back to a single line of code to remove objects.

Using an extension in Swift 2 allows you to add functionality that’s missing from the Array type. An Array is a structure, so you’ll have to use the mutating keyword and the Element is the type of object that is in the Array (generics).

Equatable means that the type must support the == (equal to) method, which is required to find an object. String objects are already equatable, so you don't need to do any extra work. If you are storing a custom object you will need to implement your own isEqual method.

// Swift 2 Array Extension
extension Array where Element: Equatable {
    mutating func removeObject(object: Element) {
        if let index = self.indexOf(object) {
            self.removeAtIndex(index)
        }
    }
    
    mutating func removeObjectsInArray(array: [Element]) {
        for object in array {
            self.removeObject(object)
        }
    }
}

With the Array Extension you can simplify your last 4 lines of code into a single line of code to remove an array of objects.

// Swift 2
var wordArray = ["Apple", "Carrot", "Peanut Butter"]
wordArray.append("Hummus")
wordArray.insert("Greek Salad", atIndex: 0)

// Find the objects to remove
var wordsToDelete: [String] = [String]()
for word in wordArray {
    if word.lowercaseString.characters.contains("p") {
        wordsToDelete.append(word)
    }
}

// Remove an array of objects
wordArray.removeObjectsInArray(wordsToDelete)

Free Online Swift App Course

Subscribe and get access to the Free iPhone App Course – you can make your first iPhone app using Swift.