Quantcast
Channel: www.iphonelife.com
Viewing all 13234 articles
Browse latest View live

TIP: Browse the Web Privately With iOS 8

$
0
0

While each new version of iOS introduces plenty of new features, sometimes Apple just changes the way things are done, often without any explanation. One such example is Private Browsing. Previously, there was a Privacy button at the bottom of Safari, when viewing an index of favorites. With iOS 8, that's gone.  

  

To start Private Browsing, touch the Tabbed Browsing button in Safari. That's the two overlapping rectangles at the bottom right on the iPhone or the top right on the iPad. Then, all the open pages will be shown, along with a Private button in the bottom left. Touch that and future browsing will be done in private mode. The interface changes to a black border instead of white. Just be sure to turn Private Browsing off if you want to leverage stored passwords or history.


Your Gadgets' Best Friend: The SeV Revolution Plus TEC Jacket [Review]

$
0
0

 The SeV Revolution Plus TEC Jacket [Review]

I love the changing of the seasons. In fact October is one of my favorite months here in the US. From coast to coast, temperatures are cooling down, trees are lighting up with brilliant colors, and there's a refreshing nip to the air. With the return of the cooler weather, many of us are rummaging through our closets, as we put away our warm weather gear and search for our winter wear. If you are in the market for a new winter jacket (or if you're contemplating giving a warm jacket to that special someone) have I got an amazing recommendation for you!

I've been a tech geek ever since I was a young child, and I've always had some kind of gadget with me on my adventures. I first got hip to the SCOTTeVEST (SeV) catalog of tech apparel about 10 years ago when I was given one of their hoodies for my birthday. I loved it and I wore it consistently for years, until my wife put her foot down and said she was "hiding" it (read: it's too old and ratty and don't ask where I "hid" it). Since then I've been a big fan of the brand and the line of outstanding quality tech clothing that they produce. Recently I've had the opportunity to review SCOTTeVEST's new Revolution Plus ($200), 26-pocket, men's winter jacket. Spoiler alert: It's amazing! This finely tailored jacket is an elegant fusion of fashion-friendly style and tech-friendly functionality. Truly, I know of no other jacket on the market that has gone to such great lengths to accommodate the techie traveler.

 

Highlights

The Revolution Plus has a lot going for it. A great deal of time and attention to detail has been poured into this cold weather jacket, so let's dive right in and take a look at some of my favorite features.

  • Waterproof: The Revolution Plus employs a hot-melt lamination technique, called HEALSPO, and Teflon fabric protection for superior water protection. Along with waterproofing, the patented HEALSPO technology also facilitates excellent wicking, whereby perspiration vapor is drawn away from the body, making for a more comfortable wearing experience in a wider range of temperatures.

  • Magnets: While the Revolution Plus does utilize zippers for some of its pocket closures, many of the pockets rely upon tiny magnets embedded in the fabric to clamp the pockets shut. This makes getting in and out of the pockets a snap, no pun intended.

 The SeV Revolution Plus TEC Jacket [Review]
SCOTTeVEST CEO, Scott Jordan, showing off the jacket's iPad pocket.
  • Pockets, pockets, and more pockets: Speaking of pockets, how many pockets does your average winter coat pack? My Columbia winter jacket's 5 pocket storage can't hold a candle to SCOTTeVEST's whopping 26 pocket count. And if you think 26 pockets is excessive, trust me, if you ask most any traveling tech-geek or well organized businessman, they will testify that indeed, 26 pockets isn't too much. It's good to have storage options and with 26 pockets to choose from, (including one that's large enough to stow the iPad Air), it's easy to stay organized while carrying everything you need. In fact, with all of the convenient pockets the Revolution Plus offers the wearer, it's conceivable that you won't even need to carry a bag or briefcase around with you.

  • NOBULGE pocket design: Speaking of carrying things around with you, the SCOTTeVEST Revolution Plus utilizes what they call a NOBULGE pocket design, with specially engineered streamlined pockets that keep any items being toted from creating unsightly bulges or attracting unwanted attention.

  • Weight management: With this many pockets you might imagine this jacket can get a little heavy. While that may or may not be the case, depending on how you use it, the folks at SCOTTeVEST have come up with an ingenious structural solution which they call their Weight Management System. This system works by reinforcing the fabric at key points to create a jacket that actually helps you carry the extra weight in the most ergonomic and comfortable fashion possible. In my experience of the Weight Management System, it's actually more comfortable to carry gear around in the jacket, than strapped on my back or over my shoulder in a backpack or messenger bag.

 The SeV Revolution Plus TEC Jacket [Review]
The interior of the Revolution Plus, note the touch sensitive pockets.
  • Warmth: This is key. After all, what good is a winter jacket that's not warm, right? The Revolution Plus is SCOTTeVEST's warmest offering, designed to keep you cozy even in freezing temperatures. It sports a thick inner quilted layer for maximum warmth on chilly days. In fact, if I had any minor gripe with the Revolution Plus it would be that the quilted lining isn't removable. The jacket would have a greater range of weather applications if the inner lining could be removed. As it stands now, this jacket is definitely geared towards colder weather, but it would be more versatile if the lining could be taken out, transforming the Revolution Plus into a lightweight top layer. On the plus side however, the sleeves and hood of the Revolution Plus are removable. This feature goes a long way toward making this jacket something that can be worn on freezing and snowy days when you'd probably just as soon stay home huddled by a fireplace, as well as on those warmer days of spring and fall adventures.

 

The SeV Revolution Plus is a cold weather jacket specifically geared toward satisfying the needs and criteria of the pocket-obsessed techie and the organized and active traveler. It serves its intended audience exceptionally well. The Revolution Plus gets a rare iPhone Life rating of 5 out of 5 Stars.

 

The Revolution Plus is just one of many high-quality pieces of tech apparel available at the SCOTTeVEST website. Their full catalog of tech-friendly gear is definitely worth checking out, especially as the cold weather holidays draw near. With their selection of travel jackets, vests, shirts and pants, for both men and women, you'll be sure to find something for anyone who might appreciate apparel that's practically custom-made for the iPhone Life community.

 

This Week's Distractions: Finger Painting Puzzles with 'Watercolors'

$
0
0

Watercolors (Free)

iPhone Life rating: 4 out of 5 Stars

There are some mobile games that only capture my attention for a few days, and there are others that I keep coming back to even after my ADHD brain has demanded new stimuli. Watercolors, by Adonis Software, belongs to the latter category; I'm still going back to try to solve some of the medium-hard puzzles, and it's both simple enough to play quickly and challenging enough to require several days to figure out.

In Watercolors, each level is a track of small connected circles, some of which have colored rings. Using just the provided pools of red, yellow, and blue, you must fill in the rings with the appropriate color. Sometimes it's as simple as dragging a primary color around the track, but soon you'll be mixing them to create secondary hues as needed. When all three colors meet, they cancel each other out, which becomes a necessary mechanic later on. It's a simple concept that takes you back to the good old days of finger painting in kindergarten, but it gets complicated and challenging before too long.

There are two modes: time trial, and free play. I've always gone with the latter, because Watercolors can be very calming, as puzzles go, when there isn't a time limit. You're awarded up to three stars for completing a puzzle in as few moves as possible. There are 90 puzzles provided which range from easy to hard, and more can be purchased for extra challenge. There is a hints system; you can either get a few by watching an ad, or buy packs of them when you're really stuck—which I might have to do, because I've been working on the seventeenth puzzle in the medium/hard pack for a week now! Luckily you can undo steps or reset the puzzle as many times as you want. My only complaint, really, is that you can't earn hints by getting a certain number of stars. Whenever a game presents me with something like stars to earn on each level, I always feel like you should be able to unlock something with them.

Watercolors is absolutely worth checking out; the free version is packed with great content and you can purchase more if it intrigues you. While it can get a little bit repetitive if you're binge playing, it's a beautiful little game that you can abandon for several weeks and then come back to and enjoy all over again. Playing Watercolors is like doing a Monday crossword puzzle while sitting in the sun; it taps into the meditative process of repeatedly doing familiar tasks, and challenges your brain to solve problems without ever making them too frustrating.

 

Pros:

  • Beautiful, simple design

  • Intuitive gameplay that's easy to learn

  • Challenging but rarely frustrating puzzles

 

Cons:

  • You can't earn hints with stars

 

The Verdict:

Give this lovely little puzzle game a try next time you're bored in front of the TV or on the bus. You won't be disappointed.

Enter the iPhone Life Photo Contest: Deadline October 24!

$
0
0

It's photo contest time again. We know you enjoy taking occasional artistic shots with your iPhone, so why not get rewarded for it! Enter our iPhone Photography Contest for a chance to win awesome prizes and a spot in our magazine! 

Submit your best iPhone photograph(s) at iphonelife.com/enterphoto by October 24. You must take and edit all photos with an iOS device, using only iOS apps. 

Our editors will choose the top three entries, and our readers will choose the fourth and final winner by voting for their favorite images on Facebook. Voting opens on October 17 and ends November 3. If your submission is among the winners, you’ll win an olloclip quick-connect lens set ($70 value) and an olloclip Quick-Flip Case ($50 value). The top 9 photos will also be featured in an upcoming issue of iPhone Life magazine.

You still have time to create a winning masterpiece, so get out there and do it!

Check out some of the entries we've already received at the top of this post by Roldan Castillo, and below by Vishhal K Modi!

Tip of the Day: Easily Add Up To 20 Widgets to Your iPhone or iPad

$
0
0

iOS 8 finally brought the ability to customize the iPhone and iPad interface by allowing you to add widgets to the Today screen in Notification Center. In an earlier post, I explained the simple steps for doing this. You simply swipe down from the top of the display to view the Notification Center and tap on the Edit button at the very bottom. This reveals widgets that are associated with apps that you already have installed on your device. You simply tap on the green button to add a widget.

Vidget (free) is different. Instead of being an app such as ESPN Sport Center with an associated widget, its sole function is to let you easily add a bunch of widgets to your Today screen, with about 20 different widgets currently available.

Vidget offers a variety of clock widgets; widgets related to you system (such as Free Space and Free Memory); GPS-related widgets (such as Speedometer, Compass, and Altitude); and weather widgets (Weather, Tomorrow, and Temperature). Plus, they invite you to request future widgets.

To take advantage of these widgets, download the Vidget app in the App Store. Open the app and tap on the + button at bottom center to reveal the selection of available widgets. Tap on a widget to add it. To remove a widget, you can press and hold, and then tap the x, just as you do when removing apps from your home screen.

You can change the color of the widgets by tapping the paint bucket icon at bottom left and then selecting your preferred color.

Once you've selected your widgets, swipe down to reveal the Notification Center, tap Edit at the bottom, and select Vidgets.

You'll then see your new widgets in the Today screen.

Lock in Trade-in Pricing on Your iPad Before October 16

$
0
0

Apple had a lot to announce on September 9, even bringing Steve Jobs's "One More Thing" phrase out to introduce the Apple Watch. So it's understandable that updated iPads or Macs weren't discussed. However, another announcement is less than a week away on October 16.

Apple is expected to announce an update to the iPad line. Given that Touch ID is over a year old, it's about time that it came to the iPad line. Now that app developers can use Touch ID for their apps, it will be even more useful. Additionally, the success of the gold iPhone 5s, which Apple wasn't prepared for, lends credence to the rumor that a gold iPad Air and possibly iPad mini will be forthcoming.

Unlike with iPhones, many iPad owners aren't on a contract, so they don't need an incentive to upgrade. AT&T, Sprint, Verizon, and others were aggressively marketing trade in offers to get consumers to sign up for another 24 months, but that might not happen with iPads. It might be wise to look to a trade-in service and lock in a value for that old iPad, if you plan to upgrade. I have used SellYourMac.com many times, with great success. I just checked and I can get $380 for my 32 GB iPad Air for AT&T, about $150 less than I paid on Black Friday last year. That's pretty attractive. Since Apple products maintain their value so well, and SellYourMac specializes in Apple gear, it's like leasing an iPad.  I can get a new iPad each year and it only ends up costing me about $10 to $20 each month. Since you can get a no-obligation quote, it costs nothing other than time, and you can make an informed decision before you purchase the next iPad. And if Apple's Tim Cook manages his supply chain, you could get the new iPad before you have to send in your old one!

Learn How to Build iOS Apps from Scratch

$
0
0

Have you always wanted to build an iOS app, but lacked the knowledge and skills? Have you ever signed up for an online course on creating iOS apps, only to feel frustrated because the content was out of date or not comprehensive enough? Are you dying to learn more about Swift and programming for the Apple Watch? It's a story we hear all the time at iPhone Life. And that's why we decided to partner with iPhone app expert, former Apple employee, and adjunct professor at RIT Paul Solt to make his iOS development courses available to iPhone Life readers at a big discount.

Paul's courses are available as individual courses or as bundles. Students who take the courses will learn how to create iPhone apps from scratch, even if you don't have any programming experience. You will come away from these courses excited and passionate about creating high-quality apps and you will understand the entire process of creation from inception through launch. And iPhone Life will be featuring some of the top apps that get built in these courses on our website!

 

Check out the course schedule:

October 6: Swift and iOS 8 Apps in 31 days

November 17: iPhone Games with Sprite Kit in 31 Days

January 12: Real World App Experience

Early 2015: Make Apps for Apple Watch

Available today: Make iPhone Apps with Objective-C

Available today: iPhone App Programming with Objective-C

Available today: Swift Primer

 

Follow the links below to get the iPhone Life discount:

 

Buy 1 iPhone Course: iPhone Apps with Swift

$49 (originally $99)

This course will teach the basics of programming along with the new programming language called Swift. You will walk away with an understanding of how to write code, design interfaces with Xcode 6, and create iPhone apps.

  • Create your first iPhone app
  • Write code with Swift, Apple's new programming language
  • Learn from daily lessons

2 Course Bundle: iPhone Apps and Games

$99 (originally $199)

These app programming courses will teach you the basics for how to make iPhone apps and iPhone games utilizing Swift. Each course is designed to fit into your daily schedule with short video lessons, code exercises, and Q&A videos.  

  • 20 hours of code tutorials and lectures
  • 40 exercises to practice what you learn
  • 40 Q&A videos to answer your questions

 

7 Courses: The Complete Bundle

$149(originally $499)

These app programming courses will teach you the basics for how to make iPhone apps, Apple Watch apps, and iPhone games utilizing both Swift and Objective-C. You will also learn vital but often overlooked real world skills, such as how to publish your app on the App store. 

  • 60 hours of code tutorials and lectures
  • 70 exercises to practice what you learn
  • 60 Q&A videos to answer your questions

Review: HoverBar 3 and iKlip Xpand

$
0
0

Twelve South HoverBar 3 ($99.99)

3 out of 5 stars

Twelve South, the makers of one of my favorite bookish iPad and MacBook cases (the BookBook series) also sells other items, one of those being the HoverBar 3.

Here is the simple value proposition of the HoverBar: Screw down the adjustable arm to the edge of a desk, table, bed or to the neck of a monitor and when you attach your iPad, it will hover above whatever the bar is screwed down to.

AS far as that simple value proposition goes, the HoverBar does exactly what it says. It is a high-quality product, matching what I have come to expect from the Twelve South engineering team. But quality does not always make for a good design.

Here are my issues:

Weight

This is a heavy product and can feel rather unwieldy when you are attaching it to something. Make sure breakables, pets, and children are out of the way (if however, you aren’t using it, keep it by the bed; it will do a number, I’m sure, on an intruder).

Mounting Plate

Screwing it down requires just the right kind of flat surface. It was, of course, originally designed to attach to the neck of an iMac, and it still fulfills that design goal. But it is now much more universal , if you happen to have flat surfaces at the proper angles to take advantage of the product. I have a Hooker desk, for instance, and the only place I could test it was on retractable surfaces above the draws. Attaching the HoverBar 3 made them no longer retractable. So make sure you have the right kind of surface to attach it to before buying.

If you do have the right kind of surface, the quality manufacturing comes into play because Twelve South placed rubber pads on the top and the bottom of the HoverBar’s attachment plates, creating a no mar surface with plenty of surface area, so you shouldn’t have any issues with indentations of wood.

Screwing and unscrewing requires keeping track of a allen wrench to unscrew the hexnut used to tighten down the mounting plate.

iPad Mounting Hardware

The HoverBar comes with custom-made plastic plates, with mounting hardware, for each of the major iPad types (2 form factor, Air, and mini). I’m a bit at odds with the designers on how they decided to attach the iPad's to the arm. These custom plastic plates wrap nicely around the edges and cradle the iPad. So far so good. On the back of the plate, however, is a square metal connector that attaches to the swivel head of the HoverBar. This square can also be used to clip into a desk stand when the iPad isn’t on the HoverBar.

On one hand, I give the Twelve South team credit for thinking “system” but they did so with a small “s.” If you use any other iPad case, save perhaps their BookBook line which is fairly easy to slip an iPad in-and-out of, the Hoverbar becomes an extra thing that must be managed. If you use high-end cases like those from Otterbox or Incipio, you may find it too much of a hassle to move your iPad from case to mounting system and back again. With the exception of a skin like those from Zing Revolution, the mounting brackets aren’t made to work with any other case. So that’s is problem one with the mounting hardware: incompatibility with other cases.

Problem number two: sharp edges and a tough dismount. When testing this sample I knicked my hand a couple of times when removing the iPad from arm. I had a hard time getting the release to work, and when I pulled hard enough with my hands in the wrong place, the iPad, once free, sent the square doodad into my finger flesh. It didn’t draw blood, but it did hurt. So be careful and don’t let children detach the iPad from the Hoverbar 3. It appears to have a great mechanism for taking hold and staying put, but not one designed for easy detachment.

Mounting system with a Big “S”

What I would have preferred from Twelve South was a case that worked with the mounting system, perhaps one that was even thin enough to also be used with the BookBook series (that square mounting doodad is just in the way). I know that there are design constraints and gives and gets, but I see a lot of cases, and I find very few cases or systems think about other accessories, or from a strategic business standpoint, making those other cases or accessories unnecessary. It can be done.

For example, the New Trent Airbender series of cases, has a detachable mount for the keyboard. When removed, the circular mount reveals the iPad’s Apple logo, which is sealed from behind. This converts the Airbender into a rugged, or not-so-rugged, case, depending on the model. If you have an Airbender 3.0, the case without the keyboard is thin enough to slip into many other non-form fitting iPad Air cases.

So what I would like to see from Twelve South is a mounting system (or at least an option) that provides compete protection for the iPad and a quick mount/dismount system. I favor a squeeze type mechanism, though perhaps not as accurate and immediately locked as the one used on the HoverBar 3; they are much easier to remove, and in my experience, safer. 

In an ideal world the Hoverbar 3 would use a mounting system that would match up with one on the BookBook, making for an end-to-end solution for Twelve South aficionados. 

Bottom line:

If you desire your iPad at eye level when you work, a Hover Bar 3 may be a good solution. For me, it introduced too many hassles to be useful on a day-to-day basis. For those who use a naked iPad, you may have a different experience.

 

The iKlip Xpand Alternative

IK Multimedia iKlip Xpand ($49.99)

4 out of 5 stars

IK Multimedia caters to musicians, so the iKlip Xpand is not designed to work with the iPad on a desk, but on a microphone stand. A simple screw mount tightens the expandable mount to the microphone stand.

Unlike the Twelve South system that offers a different mounting plate for each model, the IK Multimedia engineers have given us an expandable spring system that can even accommodate some thin shell cases. This product would have benefited from case thinking as well by making the attachments a little longer, perhaps with a bit of an edge, or a flip-up piece that would stop an encased iPad from escaping the Xpand’s grip for thicker cases. I tested it with the C6 Bookcase, however, and the Xpand held tight, even with the cover flipped back.

Note: if you already own an older stand from IK Multimedia, the iKlip Xpand mounting system uses the same hardware so you can swap out an iPad 2 specific mount for the more universe Xpand. Using this hardware the system then fits a work environment from MacBook Air to a Moog Sbu Phatty.

Bottomline: The Xpand is a lightweight, solid solution for musicians, and when combined with IK Multimedia's stand products, a good desktop solution as well. Working without removing thin cases which is a plus.


Tip of the Day: Save Time by Using Swipe Gestures to Mark or Flag Email in iOS 8

$
0
0

If you're like me, you spend a lot of time each day dealing with email. The new swiping gestures available for marking and flagging email messages in iOS 8 can save you some of that time. An earlier tip by Sarah Kingsbury explained how to swipe left to quickly delete messages. But you can also use swiping gestures to mark emails as read or unread or to flag them for followup, as well as every other function, such as forwarding or moving to another folder.

To mark an email as read or unread, swipe to the right. A full swipe to the right will change a read message to unread, or an unread message to read. It simple toggles back and forth depending on how the emall is currently marked. A partial swipe to the right pauses on the blue indicator, which you can then tap to mark as read or unread. (But it's simplest and easiest just to do a full swipe.)

 

As Sarah explained in her earlier tip, a full swipe to the left quickly deletes an email. But you can also do a partial swipe to the left to reveal several options: More, Flag, and Delete. Tap Flag to flag a message, and Delete to remove a message.

 

Tapping More brings up a menu for further actions: Reply All, Forward, Flag, Mark as Unread, Move to Junk, Move Message..., and Notify Me....

 

The use of gestures, once you get accustomed to them, can help you more quickly deal with your email.

Next iPad to Have Touch ID

$
0
0

File this under "obvious" but it's inevitable that the next iPad will have Touch ID. After all, Apple's announcement invitation simply said "it's been way too long" and it's been too long without Apple adding that capability to the iPad, since the iPhone 5s and now iPhone 6 and 6 Plus have it. So the latest rumors out of China are not surprising, but it's nice to see a photo to make it more believable.

Indeed the part shown not only is a Touch ID sensor for the iPad, it is gold in color, which signals a gold iPad option. That's also obvious. Apple underestimated the demand for the gold iPhone 5s last year and that had to play a role in the decision to build a gold iPad. Stay tuned to iPhoneLife.com for the October 16 announcement!

iPhone 6/6 Plus Case of the Week: The Otterbox Defender

$
0
0

iPhone 6/6 Plus Case of the Week: The Otterbox Defender

It's that time of year again. Right after a new iPhone comes out there is the inevitable deluge of great cases to protect your new investment. This happens with every iPhone release, but perhaps never more markedly than with the introduction of the completely new form factors of the iPhone 6 and 6 Plus. If ever an iPhone needed a case it is these large and larger models, with their increased real estate, slick, rounded edges and extra weight. Rather than clump a bunch of individual cases together I'll be focusing on one great case each week over the course of the coming months. This week's featured case is Otterbox's Defender.

iPhone 6/6 Plus Case of the Week: The Otterbox Defender

When I look back over the years since the iPhone first came out in 2007, the one case that I've noticed on more iPhones than any other has always been the Defender. There's a good reason for that too, since the Defender manages to combine extreme protection with a form factor that adds little in the way of bulk to your svelte iPhone 6(59.90) or 6 Plus (69.90). The Defender is also a highly customizable case with a vast selection of individualized color combinations to choose from.

Good looks aside, the Defender is a beast of a protective case, do not let its slim profile fool you. I have personally, though not intentionally, beat the living daylights out of my Defender-encased iPhone, including dropping it in the toilet (which fortunately was clean both times!) and dropping it repeatedly from heights of over four feet, all with no damage to my phone. I need to make it clear though, the Defender is not considered a waterproof case. Water resistant, yes, but not waterproof. So the fact that the Defender has kept my iPhone safe from more than one dunking, albeit brief ones, is just more testament to its effective protective design.

The Defender employs multiple layers of reinforcement with a thin and shock-absorbing innermost layer, a rigid internal shell, a dense rubber external bumper, a built-in touchscreen protector and a tough as nails iPhone holster. When all is said and done, the Otterbox Defender for the iPhone 6 and 6 Plus isn't just one of the nicer looking protective cases available for your iPhone, it's also one of the most durable. With the Defender you don't have to give up style for protection, and you don't need to add excessive bulk to your iPhone to have one of the toughest iPhone cases protecting your valuable investment.

Pros:

  • MIL-STD-810 rated. For more details on the Military Standard ratings, click HERE.

  • Low profile, minimal bulk

  • Colorful variety of customizable cases

Cons:

  • Wish there were protective covering over the front and rear cameras, which would go a long way to making this case more water resistant and resilient.

Verdict:

The Otterbox Defender is a top quality case for your new iPhone 6 or 6 Plus. Its slim construction and easy access to all ports and buttons means that you can simply put your iPhone in the case and leave it there, resting assured that your iPhone is secure from all manner of calamity.

 

iPhone Life rating:

5 out of 5 stars

Tip of the Day: Quickly Mark All Emails as Read

$
0
0

Mail in iOS 8 has a lot of helpful features that make it easier for you to deal with the onslaught of email messages. In addition to the new swipe gestures covered in a previous tip, iOS 8 also offers a quick way to mark all email messages as read. If you've glanced down the list of messages in your Inbox and determined there's nothing needing your attention, this is a quick way to deal with them.

To mark all email messages as read, tap on the Edit button at the top of the list of messages.

 

That moves the list slightly to the right and reveals a circle in front of each message that you tap to indicate which emails you want to act on. But in this case, you want to tap Mark All at bottom left, since you want to mark all as read.

 

Tapping on Mark All reveals a popup menu that lets you either Flag all the messages or Mark as Read.

 

Swift Programming 101: Generics-A Practical Guide

$
0
0

If you have read Apple's documentation on Generics and were left wondering how you could use this technology in your own projects, this post is for you! You will learn how to take full advantage of generics in your every-day code as well as how to avoid the constant type-casting that usually results from creating generalized code.

The Problem with Generalized Code

Every good app developer needs a base of generic code they can use from the iOS projects they create. For example, in this blog series I have used the mmBusinessObject class in several projects. This class encapsulates Core Data, and using it in your projects helps you avoid repetitive code.

However, one of the downsides of using generalized code is that you often have to downcast from general types to more specific types many times in your project. 

Let's look at a sample that demonstrates this problem. You can download the sample project for this post at this link.

  1. Open the GenericsDemo project in Xcode.
  1. The Project Navigator contains most of the classes shown in Figure 1 class diagram.
class diagram
Figure 1 - Business object class diagram

On the left side of the diagram are the business classes. Person and Company are subclasses of ABusinessObject, which is in turn a subclass of mmBusinessObject.

On the right side of the diagram are the entity classes. PersonEntity and CompanyEntity are subclasses of NSManagedObject.

The mmBusinessObject class contains methods that create and manipulate entities. Since this is a custom framework-level class, its methods return instances of NSManagedObject. This allows you to use the mmBusinessObject class from any iOS project.

Your project-specific business classes such as Person and Company, inherit these methods which return NSManagedObject instances. However, they need to downcast the generalized NSManagedObject into PersonEntity and CompanyEntity objects, to access entity-specific properties such as firstName, lastName, and personID (Figure 1).

Let's take a closer look at this in code so you fully understand the relationship between these classes and the problem with generalized code.

  1. Select the mmBusinessObject.swift file in the Project Navigator. Near the top of the file is the createEntity method, which returns an NSManagedObject:

Below this method is the getAllEntities method, which returns an array of NSManagedObjects:

  1. The Person and Company classes inherit these methods and therefore return the same types as mmBusinessObject. To verify this, select the ViewController.swift file in the Project Navigator. Check out the code in the viewDidLoad method:

This code creates a Person object, then calls its getAllEntities and createEntity methods. The second block of code creates a Company object and calls the same methods on that object.

  1. Click on the personList variable and then go to the Quick Help Inspector on the right side of the Xcode window (Figure 2).
personList Quick Help
Figure 2 - personList holds an array of NSManagedObjects.

It indicates the variable's type is an array of NSManagedObjects. This is determined by Swift's type inference, based on the getAllEntities method's return type.

  1. Click on the personEntity variable. The Quick Help Inspector indicates it is of type NSManagedObject, based on the createEntity method's return type (Figure 3).
personEntity Quick Help
Figure 3 - personEntity is of type NSManagedObject.
  1. Click on the companyList variable and you can see it holds an array of NSManagedObjects. Then click on the companyEntity variable and you can see it is of the type NSManagedObject. That's because the getAllEntities and createEntity methods are inherited by both the Person and Company classes, and both methods return objects of type NSManagedObject.
  1. Let's try to access the properties of the PersonEntity object. Below the code that creates a PersonEntity object, add the last line of code in Figure 4, which tries to access the firstName property.
access PersonEntity first name
Figure 4 - Try to access the PersonEntity object's firstName property.

The firstName property doesn't appear in the Code Completion list because the personEntity variable is of type NSManagedObject. You have to downcast to PersonEntity to see this property.

  1. Delete the partial code you just entered, and let's add some code to perform the downcast.

A Non-Generic Solution

Let's look at one option of downcasting the return values of these inherited methods without generics.

  1. In the viewDidLoad method, you could change the code as follows (but don't):

This solution works. The return value of each method is downcast to the correct type of entity. However, this is a real pain in the neck. Every time you call a business object method (and there are many more methods than I am showing here), you have to write code that performs a downcast.

It's much less work to have each business object return the downcast type instead. To do this without generics, you add methods to the Person and  classes that override existing methods or add completely new methods to return the desired types. For example:

This is a more acceptable solution. It accomplishes the goal of business objects returning PersonEntity and CompanyEntity objects. However, when you consider all the methods in the mmBusinessObject class (about 20 in the full version) and multiply that times the number of business objects in each project (20-30 in a large project), you quickly find yourself overriding several hundred methods. There's got to be a better way!

Enter generic methods.

The Generic Method Solution

There are a few ways you can incorporate generics in your projects. Let's start with a minimalist approach and create a generic method.

  1. Since we are going to change the mmBusinessObject class to implement generics, let's leave the current class intact, and edit mmBusinessObjectGeneric, which is a copy of the class with a different name.
  1. Select the ABusinessObject.swift file in the Project Navigator. Remember, this class is the superclass of both the Person and Company classes (Figure 1), so changing its superclass also changes the heritage of the these other classes. Near the top of the class, change the superclass to mmBusinessObjectGeneric:

  1. Select the mmBusinessObjectGeneric.swift file in the Project Navigator.
  1. Near the top of the code file, locate the createEntity method (Figure 5).
createEntity specific
Figure 5 - The createEntity method in its "specific" form

This method is not generic. It returns a specific value of type NSManagedObject. When we convert it to a generic method, any code that calls this method can specify the type of the return value.

  1. Let's take the first step in making this method generic. Between the name of the method and the parentheses, add <T>:

This is a type parameter. It declares the letter T as a placeholder for a type within this method. This is similar in concept as using n as a placeholder in an equation. The type parameter is replaced by an actual type when the method is called.

There is nothing magical about the letter T. You can specify a different letter or set of letters as the placeholder, but it's conventional to use the letter T, which stands for "Type".

When you declare a type parameter for a method, it can be used to specify:

  • The method's parameter types
  • The method's return type
  • Types in the body of the method

Let's make use of this method's type parameters now.

  1. Replace the createEntity method's NSManagedObject return type with the T placeholder:

  1. Next, change the as NSManagedObject operation at the bottom of the method to as T:

Figure 6 shows the three places you have used the type parameter. Now you're ready to call this generic method to see how it works at run time.

Figure 6 - createEntity as a generic method

 

Testing the Generic Method

  1. Select ViewController.swift in the Project Navigator.
  1. Press Command+B to build the project. This displays a Cannot convert the expression's type '()' to type 'T'error for these lines of code:

The compiler is complaining that you have not supplied enough information to determine the type it should substitute for the T placeholder in the createEntity method.

  1. If you have used generics in other languages, your first instinct may be to pass the type to the method between angle brackets like this:

However, this produces the compiler error Cannot explicitly specialize a generic function.

  1. Even though you can't explicitly specify the type in this way, you can specify the type of the  variable where the method's return value is stored:

This allows the compiler to infer that PersonEntity can replace the T placeholder as the createEntity method's return type. Go ahead and make this change.

  1. Do  same for the CompanyEntity object:

  1. To see this code in action, set a breakpoint on the line of code shown in Figure 7.
Set breakpoint createEntity
Figure 7 - Set a breakpoint on the call to createEntity.
  1. Click Xcode's Run button and execution stops on the breakpoint you set.
  1. Click the Step Into button in the Debug toolbar at the top of the Debug area. This moves execution to the createEntity method. The Variables View shows the T placeholder type is now PersonEntity (Figure 8). This is generics at work!
The T placeholder
Figure 8 - The T placeholder type is CompanyEntity.
  1. Click the Step Out button to run the createEntity method. This returns you to the viewDidLoad method, where you can see in the Variables View that the personEntity variable is of type PersonEntity (Figure 9).
createEntity returns PersonEntity
Figure 9 - createEntity returns a PersonEntity type.

In this example, Swift was able to determine the correct type to substitute for T using type inference on the method's return value. This also works for methods with generic parameters as you will see in just a bit.

Although generics are working properly in this example, you must still specify the type of the return variable. This doesn't completely solve the initial problem of having to explicitly declare types when accessing business object methods. There must be another way!

Enter generic classes.

Declaring Generic Classes

If you have used Swift's Array or Dictionary class, you have already used generic classes. When you declare an Array or Dictionary, you specify the type of values contained in the collection. For example, the following code declares an array of type String:

Swift lets you declare your own custom generic classes. Let's try it with mmBusinessObjectGeneric.

  1. Select mmBusinessObjectGeneric.swift in the Project Navigator.
  1. Add the following generic class declaration at the top of the code file:

This type parameter declares that T is used as a placeholder for a type within the entire class.

The : NSManagedObject in the declaration is a type constraint. It specifies mmBusinessObjectGeneric only works with types of NSManagedObject or its subclasses. This allows the class to work with PersonEntity and ConpanyEntity objects (which are subclasses of NSManagedObject), but not with objects of a completely different type such as String or Integer.

  1. Since the generic class declaration encompasses the entire class, we can now remove the generic type declaration from the createEntity method.
  1. Press Command+B to build the project and you will get several compiler errors.
  1. To examine one of these errors, in the Project Navigator, select the ABusinessObject.swift file. You can see the compiler error Reference to generic type 'mmBusinessObjectGeneric' requires arguments in <...> (Figure 10).
ABusinessObject compiler error
Figure 10 - The ABusinessObject compiler error

Now that mmBusinessObjectGeneric is declared as a generic class, we need to include a type argument in angle brackets whenever we reference it.

  1. Since mmBusinessObjectGeneric only works with instances of NSManagedObject or its subclasses, change the mmBusinessObjectGeneric reference to:

  1. Press Command+B to build the project. This generates a new compiler error, Classes derived from generic classes must also be generic (Figure 11).
Subclasses of generic classes
Figure 11 - Subclasses of generic classes must also be generic!

This is another requirement of generics in Swift. It means we must also declare ABusinessObject as a generic class.

  1. Add the following generic declaration to make ABusinessObject a generic class:

Since mmBusinessObjectGeneric only works with instances of NSManagedObject, we should declare ABusinessObject to do the same.

  1. Rather than repeating NSManagedObject twice in the class declaration, change the type of the mmBusinessObjectGeneric reference to T:

  1. Press Command+B again and you can see the error has moved further down the inheritance chain to the Person and Company classes.
  1. Select Person.swift in the Project Navigator and add the following generic declarations:

This declares Person as a generic class with T as a placeholder that only works with instances of the PersonEntity class. The T placeholder is used as a type argument for the ABusinessObject superclass.

  1. Select Company.swift in the Project Navigator and add the following generic declarations:

This declares Company as a generic class that uses T as a placeholder, and only works with instances of the CompanyEntity class. The Tplaceholder is used as a type argument for the ABusinessObject superclass.

 depicts the new generic class hierarchy.

The new class hierarchy
Figure 12 - The new class hierarchy
  1. Press Command+B and there are no more compiler errors!

Now you're ready to take these generic classes for a test drive!

Testing the Generic Class

  1. Select the ViewController.swift file in the Project Navigator.
  1. Remove the explicit variable types from the code that calls the createEntity method on the Person object:

This is no longer necessary since the Person object effectively passes the PersonEntity type up through the inheritance chain where it is used in the createEntity method. Swift can now infer the return value type as PersonEntity.

  1. Do the same for the code that calls createEntity on the Company object:

  1. In the viewDidLoad method, click on the personEntity variable. The Quick Help Inspector on the right side of the Xcode window shows it is of type PersonEntity (Figure 13).
Figure 13 - personEntity is of type PersonEntity.
  1. In the viewDidLoad method, click on the companyEntity variable. The Quick Help Inspector shows the variable is of type CompanyEntity (Figure 14).
Figure 14 - companyEntity  is of type CompanyEntity.
  1. Add the following code to the viewDidLoad method to prove the createEntity method is returning entities of the correct type:

  1. With the breakpoint still set on the line of code that creates a new PersonEntity (Figure 7), click Xcode's Run button. When the breakpoint is hit, click Step Into in the Debug toolbar to step into the createEntity method on the Person object. The Variables View shows the T placeholder is of type PersonEntity, as it should be (Figure 15)!
T is PersonEntity
Figure 15 - The T placeholder is of type PersonEntity.
  1. Click Step Out to return to the viewDidLoad method, and then click Step Over four times to run the code that displays the property values in the Console:

Name: Kevin McNeish

  1. Click Step Over twice, and then click Step In once to run the createEntity method on the Company object. The variables view shows the T placeholder is now of type CompanyEntity (Figure 16).
T is CompanyEntity
Figure 16 - The T placeholder is of type CompanyEntity.
  1. Click Step Out, and then click Step Over four times to run the code that displays the property values in the Console:

Company: Apple - www.apple.com

  1. Click Xcode's Stop button.

We have created a generic class whose methods can return the type that we specify!

Implementing Other Generic Methods

Once you have set up the generic class inheritance hierarchy, it's easy to implement other generic methods. Let's try it out.

  1. Select the ViewController.swift file in the Project Navigator.
  1. Click on the personList and companyList variables and note that the Quick Help Inspector indicates they are of the Array<NSManagedObject>? type.
  1. Select the mmBusinessObjectGeneric.swift file in the Project Navigator. Change the getAllEntities method's return type and the last line of code's as operation to Array<T>? as shown here:

  1. Select the ViewController.swift file in the Project Navigator. Click on the personList and companyList variables and you can see their types are now Array<PersonEntity>? and Array<CompanyEntity>? just as they should be!
  1. Feel free to run the project again, and check out the personList and companyList arrays first hand.

Conclusion

Generics is the gift that keeps on giving, and provides even further benefits for methods inherited from a generic class. They allow you to create generic custom framework classes you can use in all your projects without the mundane task of constantly downcasting!

 

Enter Our New Year's Challenge and Win a $50 iTunes Gift Card!

$
0
0

 

Start hardening your New Year's resolve with iPhone Life's iTunes Gift Card Challenge!

The Challenge:

How would you spend a $50 iTunes Gift Card to help you keep your New Year's resolutions? Send us a list of four to eight movies, books, songs, TV shows, or apps of your choosing, and explain why each purchase would help you keep you on track in 150 to 300 words. Your list must add up to within a buck or two of $50.

Word count: 150 to 300 words

Deadline: Email your responses to challenge@iphonelife.com by November 3. 

 

The Prize:

Whoever submits the best defense of their iTunes Store selection will win—you guessed it—a $50 iTunes Gift Card! We'll also feature you in our New Year issue of iPhone Life magazine!

Apple Has a Fix for a Broken iPhone 6

$
0
0

I've owned every iPhone since the beginning and never cracked a screen. But the other day, my luck ran out. Technically, it was my daughter's luck and her iPhone that cracked, but the buck stops with me. It was a new iPhone 6 and it fell out of her pocket at three or four feet, onto the parking lot. It was in a case, but the case didn't offer much protection on the bottom edge and that's where the crack started.

The iPhone was usable, and when I put it in a fully enclosed case, with a built-in screen protector, it could be used without risk of getting cut. But a new iPhone 6, with a visible crack, stored in a bulky case wasn't what my daughter wanted. So I investigated my options.

Several companies, like iCracked.com wanted $300+ for the repair, since the parts are so rare and expensive. It turned out that the best option was Apple themselves. I originally schedule a Genius Bar appointment for four days after the cracking, as that was all that was available, but I tried my luck the next morning, in person at the Apple store, and was able to get service within an hour.  In the future, Apple might repair cracked screens on-site, or send them back while you wait three to five days, but the Apple Genius told me that the parts are so rare, that it's easier to just give the customer a new iPhone. They have several, in unmarked boxes, for just such a purpose.

Even though I didn't have AppleCare, for $109 plus tax, Apple swapped out the old iPhone for a new one, while I waited. Fortunately, I always do backups to iCloud so it was easy to switch. Even if I had purchased AppleCare for $99, I would still have to pay $79 plus tax for each repair, up to to two times. So I would have paid over $180. There are some other benefits to AppleCare, of course, so check with Apple before you decide against it.

Still, the moral of the story is backup your iPhone, find a good protective case, and just take care of it! And make sure your kids get a job (as mine did) so they can pay for their own repairs!


The End of MacWorld, in Print and Tradeshow Form

$
0
0

MacWorld has a storied history. It launched with the original Mac back in 1984, and was the closest thing to an official Apple magazine as there was. The MacWorld tradeshow, many of which I attended, was a chance to meet with Apple representatives, Apple fans, and suppliers without having to mingle with PC folk! So many of Apple's product announcements and turning points occurred at MacWorld and so many great writers contributed to the print magazine of the same name.

Then all of a sudden, the day after the September 9 iPhone 6 event, IDG, publishers of MacWorld, abruptly announced the end of the print magazine and layoffs of nearly everyone. So it's probably not a shock that news came out today that the MacWorld / iWorld tradeshow is also going away. Technically, the show is on "hiatus" but that sounds a lot like what happened to COMDEX shortly after 9/11, and it never returned.

MacWorld was always an afterthought, after the much larger CES extravaganza that is held a couple of months (and sometimes weeks) earlier. Vendors, attendees, and journalists have to closely manage their travel budget in this or any economy. Many times, MacWorld didn't make the cut. Even as MacWorld tried to morph itself into "MacWorld / iWorld" to recognize the role of iOS devices, it couldn't compete.

Ironically, I just made my flight and hotel plans for CES yesterday, and had no plans to attend MacWorld this year. CES has become so large and all-encompassing that there's little need for a dedicated Apple event. Apple doesn't exhibit at CES and hasn't been at MacWorld for years so that's not a factor. Apple accessory and software makers are well represented at CES, so it's not like I wouldn't get a lot of articles out of that show compared to MacWorld. Oftentimes at MacWorld, I was able to cover the entire MacWorld show floor in less than a day, whereas I allot four days or more for CES.

So, it is with a heavy heart that I bid adieu to the live event so soon after the print version of MacWorld has ceased. Fortunately, there are still Apple-dedicated publications and events, not just iPhone Life, but also MacTech Magazine and the MacTech Conference. I will be attending that event, to get my Apple fix! Register by October 24 to save $200! I hope to see you there!

Tip of the Day: View the Desktop Version of a Website in Safari

$
0
0

One of the useful new features of iOS 8 is the ability to view the desktop version of a website in Safari rather than the mobile version — saving me a lot of frustration. For years I’ve had a personalized Yahoo page that's well organized into three columns: 1) stocks, sports, weather, 2) top news, science news, Doonesbury, and 3) Apple news sites. So it was really disorienting when I would go to my Yahoo page on my iPad and all the news feeds would be in two columns with the order all jumbled up. The first time I used this new iOS 8 feature to request the desktop site, my response was: hallelujah!

This is how my personalized Yahoo page looked via the mobile page:

 

To request the desktop version, tap in the address bar of the page, which brings up the Favorites screen. Drag down on the favorites screen to reveal two menu selections: Add to Favorites and Request Desktop Site.


Tap on Request Desktop Site. Now my personalized Yahoo page is just the way I like it: in three well-organized columns.


 

Taking Stock of Apple's iPhone 6 and 6 Plus Inventory

$
0
0

Even as Apple ramps up for another product announcement, it's still hard to get your hands on the last set of products they announced. The new iPad Air is expected to be in short supply, and the iPhone 6, especially the Plus-sized model is also playing hard to get. Given all the sizes (6 and 6 Plus), colors (silver, gold, and space gray), carriers (AT&T, Sprint, Verizon, etc.) and memory combinations (16GB, 64GB, 128GB) it's remarkable if you can find the exact model you want, in stock, without settling for something else.

iStockNow

In the past, there were websites that let you track inventory in specific locations. You had to choose a region, and specify the model, color, carrier, and capacity, but Apple took those websites down. Now, there's an even easier to use site, called iStockNow, that projects the global inventory at a glance! You can see if it makes more sense to drive to the next town versus the local Apple Store. For example, I'm in Rochester, NY, but instead of my local Apple retailer, I should head 60 miles west to Buffalo if I want a new iPhone 6 Plus. While I'm happy with my iPhone 6, this tool could be quite useful, especially when the next iPad Air, Apple Watch, or other Apple gadget is in short supply!

LifeCharge Battery Case with Wireless Charging Is a Powerful Case

$
0
0

I love my iPhone 6, but this iPhone 5 battery case from LifeCharge makes me miss my iPhone 5s. There are a lot of battery cases out there, and there's only so many ways to differentiate themselves, but LifeCharge found two ways that I appreciate. First, it recharges wirelessly, using the included charging pad. Just place the iPhone, in the LifeCharge case, on top of the slim, silver pad, and it starts charging. It's like magic! Since Apple is unlikely to adopt Qi or PowerMat's charging standards, this may be the closest we come to induction charging.

You can also charge the case traditionally, using a microUSB cable, which is helpful for traveling since you will probably want to leave the pad at home. Another nice touch is the material is solid where it needs to be and flexible around the edges, where a bumper case might be. This allows you to slip the iPhone in and out easily, instead of a two-piece design (like PowerMat uses) which can be a nuisance. As with most battery cases, the headphone jack is somewhat obstructed, so most headphones may not fit, but they include an extension cable. Still, this is one area ripe for improvement.

I'm looking forward to an iPhone 6 version of this case, while my daughter gets to enjoy it with her iPhone 5s. If I do get one for the iPhone 6, we should be able to use the wireless charging pads interchangably, so that's a nice advantage. I can leave them throughout the house and always be charging. LifeCharge even makes cases for certain Android phones, so the charging pads can be universally used!

Here's What to Expect from Tomorrow's Apple Event [Update]

$
0
0

Once again I'm really looking forward to an announcement from Apple. Tomorrow's event will be live streamed and will likely introduce the next iPad Air and a new retina iMac. Beyond that, not much is known. The iPad Air 2 is expected to have Touch ID and an 8-megapixel camera. In addition, it's expected to come with the new A8 processor, which is remarkably more efficient than the previous A7, meaning the battery can be smaller while offering greater performance. The iPad Air 2 is also rumored to include an anti-reflective screen coating, which would be a nice feature. However, rumors say that the Apple is having problems producing this new type of display, which may constrain supplies of the new iPad for a while. 

It's pretty certain that the rumored 12.9-inch iPad won't be announced. The latest rumors suggest we won't see it until 2015. Also, rumors about a new iPad mini have been mixed. The consensus seems to be that there won't be an update until next year, or that if we do see an update, it will be minor. That's not what I want to hear. I've been looking forward to getting a new iPad mini with the same features that are rumored for the iPad Air.

So what else? There has been a lot of speculation but no solid leads. It's hard to imagine that Apple will only introduce a new iPad Air and 27-inch iMac with retina display. The invitation read, "It's been way too long," and that suggested to many that Apple would possibly be updating several products that haven't been given any attention in quite a while: Apple TV, the iPad touch, and the Mac Mini.

Over the past year there have been many rumors about an Apple TV update, and if Apple does indeed come out with a new version of one of the devices, I think the Apple TV will be it. Many are expecting a new interface, an App Store, and the ability to use it for gaming. In addition, it may be central to Apple's new HomeKit smart-home platform. Plus, it will inevitably include Siri. And ever since Apple bought the company that developed the motion-control system for Microsoft's Kinect, people have been expecting Apple to include gesture control in Apple TV.

I would absolutely love to see a new Apple TV device tomorrow. Here's hoping.

What about a new iPod touch? That's an interesting question. Given how completely the iPhone and iPad have eclipsed the iPod line, it's hard to imagine Apple investing much in further development of the iPod. Steve Jobs was famous for killing products that were nearing the end of their cycle, even if they were still selling. He was always looking ahead. I'd be surprised to see a new iPod touch, but you never know. I do know there are definitely some people who are really hoping to see an update of the touch.

[Update]: According to The Verge, Apple has accidentally revealed what's coming tomorrow: an iPad Air 2 and iPad mini 3.

Viewing all 13234 articles
Browse latest View live