View Controller With No NIB

On the whole, a view controller is created exactly like any other object. A view controller instance comes into existence because you instantiate a view controller class, either in code or by loading a nib / xib / storyboard.  Beginners are taught to make Apps with Storyboard and that is great. Storyboards and Segues are an amazing addition to Interface Builder now all rolled into Xcode.

When working on a client with another developer there were times when we would have merge conflicts due to just even peeking at the Storyboard (which serves as a good reference and documentation for the project). Almost every check-in we had to double check and redo some small change and we were checking in often. There were only two of us so as the team grows these merge conflicts I can only imagine would grow. For the reason of multi-developer environments there are firms who do away with not just Storyboards but Nibs / Xibs in their entirety.  I thought I’d create an App with a TableViewController that has no NIB as a reference for those who have never seen how this is done.  This code is in Github.  Continue reading

WD My Cloud NAS on Ubuntu

I decided that 2014 for me was going to be the year of the Network Attached Storage (NAS). Last year was the year that I finally abandoned my desktops and went all laptop for both my Mac-based iOS development workflow and general purpose computing (i.e, everything else on my Acer i5 running Lubuntu). This year I wanted to have a massive centralized storage where I could put all my videos and photos so I can access it from any laptop or mobile device. What follows is what I chose and how to hook it up to Lubuntu.

Continue reading

iOS Tutor 1.1 Update

iOS Tutor 1.1 Update

iOS Tutor 1.1 Update

My iOS Tutor App has today received its first update bumping 1.0 to 1.1. Although, it has only been four days since 1.0 went live I did plan on a delayed launch of 1.0 in order to give me time to prepare as many lecture decks as I could for launch – plus add the four day Apple review time (which is actually quite fast) and you have a solid 1.1 that was building up. Continue reading

First AppStore App: iOS Tutor

iOS Tutor in the AppStore

iOS Tutor in the AppStore

On Wednesday, November 6th, we presented three ideas for hackathon apps and we voted on which would be the best.  I was surprised that my Flash Card idea was voted my best idea because it would promote the excellent Stanford iOS course and not the Flatiron School.  But I accepted the class’ judgement and proceeded for the next three days to hack out what would become my first AppStore App.
Continue reading

Adding Core Data

Working on updating my hackathon application for AppStore submission I wanted to do some Core Datafication on it: that is add Core Data to an existing project that did not have the Core Data shizzle in it before.  For the hackathon I used pLists to have initial data which is one step better than just hardcoding but not scalable.  I’ve added Core Data to so many apps by now but find myself always cheating off myself and going back to my notes such that I thought it was time I centralize the four easy steps needed.   Continue reading

New Radar

Today, for our CapStone we started continuous integration with Xcode 5 Bots. Upon writing my first test using two of the same singleton objects A & B to test equality with XCTAssertEqual(A, B, @”Equality”) the notification came in as “Test Failed.” How can this be? We are using boiler plate singleton code.  What is especially troubling is that in Xcode the test is showing green and indicating having passed.  What gives? I executed the test again and the notification came in “Test Succeeded.” Weird.  I tried it again and again and it fails here and there with no distinct pattern.

This was a Radar I thought and I posted:
XCTest Notification Shows Test Failed on Successful Testsrdar://15515678

My previous Radar has since been closed by Apple Developer Relations as a duplicate yet two weeks later Game Center is still not showing up as a search result at Apple.com.
Game Center Link Is Broken on Apple.comrdar://15417484 – Closed as duplicate of rdar://15417000

I also opened a feature request Radar for the issue I wrote about in yesterday’s blog entry entitled “Formatting Phone Numbers on an iPhone“:
Telephone Number Formattingrdar://15516158

Formatting Phone Numbers on an iPhone

With my Corporate Directory CapStone project I found myself needing to format a phone number in phone fields like cell phone, home phone, office phone, etc.  I was surprised to find this is not as easy on an iPhone as you may think.  Even though clearly Apple has this functionality in Contacts they have no Public API for phone formatting.  You may think what’s the big deal anyhow. Well, in the US you could have a leading 1 or not and you want to be consistent with area code segmentation and then there are international numbers.  I started looking on stackoverflow but thought there ought to be a better way than implementing my own NSFormatter. Continue reading

Fun With UIScrollView

Fun With UIScrollView

Tech Talk at the Flatiron School

Today, at Flatiron, I presented a Tech Talk that provided a tour of UIScrollView.  The UIScrollView class provides support for displaying content that is larger than the size of the application’s window. It enables users to scroll within that content by making swiping gestures, and to zoom in and back from portions of the content by making pinching gestures. On a phone, and even an iPad, this is crucial. Continue reading

Flatiron Day 25: Networking

Kicking-off week 5 we started the morning with pair coding on our class App LocationQuiz.  We implemented the design we crafted on Friday – getting location venues from FourSquare and filling a new Nearest Locations Table View controller. This was a good exercise in practicing our Inter View Controller Communication as the Nearest Location needs to send its chosen venue object back to the presenting View Controller that spawned it.  Instead of implementing a delegate in the presenting controller we did this by having a property on both sides and setting that object before we popping the Nearest Location View Controller. Continue reading

Flatiron Day 24: Review Session 4

Today we held our fourth Weekly Review Session and as usual this was extremely worth going through this code kata.

We started an empty review session App and set out with a goal to build an RSS Reader from scratch.  We first cranked out a Podfile in order to use the first CocoaPod we found when we searched for the term RSS: BlockRSSParser. Continue reading