The aim of this post is to show a possible mechanism for implementing the communication between Apple Watch and iPhone app. After trying several methods: CoreData, NSKeyedUnarchiver and NSUserDefaults, I have decided to chose NSUserDefault because it was the most simplified one. I would recommend the other two just in case that you wanted to share bigs amounts of data.
The application that I am going to create will show in the watch screen the value of a counter, that is increased (or decreased) from the iPhone app. Before continuing, be sure that you are working with Xcode 6.2, otherwise you will not be able to create a watchkit extension.
Create a new Single View project
Create a new Single View Application project:


Go to project properties>Capabilites>App Group, turn it on and create a new group:

In the iPhone app storyboard we will add another label and a stepper:

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIStepper *stpCounter;
@property (weak, nonatomic) IBOutlet UILabel *lblCounter;
@end
Add an action method for the stepper and leave it in blank by the moment, we will fill it later.

The watch kit extension
Go to File>New>Target…>iOS>Apple Watch


And go to project properties, select the target extension (E), select Capabilities, turn on App Groups and select the group that you created before:

Now we will place the label in the watch kit storyboard that will show the value of the counter.

...
@interface InterfaceController()
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *lblCounter;
@end
...
The common data
I have created a new group on top the project hierarchy and added a module called Model, that is where I will place the common data.

VERY IMPORTANT: Be sure that those files are assigned for both targets:

Now is time to fill the stepper action method that we have created previously and do not forget the #import:
...
#import "Model.h"
...
- (IBAction)stpValueChanged:(id)sender {
[self.lblCounter setText:[[NSString alloc] initWithFormat:@"%f",[(UIStepper*)sender value]]];
[Model setCounter:[[[NSNumber alloc]initWithDouble:[(UIStepper*)sender value]] intValue]];
}
...
Now let make an stop in the path for checking if stepper is updating the counter. Select watchkitCounter target and any iPhone simulator and press the play button for running the app in the iPhone:

Click on the stepper for assuring that label updates with counter value:

Next step is to fill in the watch kit extension interface controller:
#import "InterfaceController.h"
#import "Model.h"
...
- (instancetype)initWithContext:(id)context {
self = [super initWithContext:context];
if (self){
// Initialize variables here.
// Configure interface objects here.
NSLog(@"%@ initWithContext", self);
[self.lblCounter setText:[[NSString alloc] initWithFormat:@"%d",[Model getCounter]]];
[NSTimer scheduledTimerWithTimeInterval:0.5
target:self
selector:@selector(refreshValue)
userInfo:nil
repeats:YES];
}
return self;
}
...
-(void) refreshValue{
int iCounter=[Model getCounter];
[self.lblCounter setText:[[NSString alloc] initWithFormat:@"%d",iCounter]];
}
@end
I have initialised the label when the form is loaded and program a timer for pulling the data. Finally build and execute the target watchkitCounter Watch App:

Once the simulator is on you will see that the app is not running, this is normal. Be sure that apple watch simulator is also on screen, if does not go to iOS Simulator>Hardware>External Displays>Apple Watch (and re-run):

Do not get nervous, if you see blank screen on watch kit simulator, on my computer (Mac-mini 16GB+SSD) takes almost 10 seconds for starting up. Once is on, you will see that watch-simulator refreshes the value of the counter, but the iPhone simulator does not start up the iPhone app, next step is select the iPhone app play with the stepper and observe how counter in the watch-simulator is being updated.

And that is all!. In case that you had any doubt or something were not properly explained, you can download the demo project from here. I hope that this post would be useful and clarified your doubts, please feel free to send me any comment or amend.