unarchiveObjectWithFile:
returns the unarchived object for you to use. At the moment you just check if it is nil (with your if
statement) and then it gets destroyed (deallocated because you don't use it, assuming you're using ARC).
So, get the object returned by unarchiveObjectWithFile:
and set it to your property.
Not sure what you're trying to do with NSCoding on the view controller, but it may well not do what you're looking for.