Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Build a Simple iPhone App with Objective-C Creating a Data Model Creating a Data Collection

No idea how to do this.

Let's add a few items section (task 2) for the Creating a Data Collection challenge. It is asking me to use 'self' and dot notation to initialize an array of three items to shoppingList.

Usage of 'self' in lesson much more limited. I don't remember much instruction on how much we treat self (and dot syntax) in the Objective-C Basics, and certainly not whether many of the same operations as are used in bracket syntax can just be dropped in. Even Googling 'self in Objective-C' or using the documentation is not giving me the answer.

What am I missing? I have tried including NSArray in brackets, not including it, various dot-suffixes after self.shoppingList, initWitharray, initWithObject, etc.

ViewController.h
#import "UIViewController.h"

@interface ViewController : UIViewController

@property (strong, nonatomic) NSArray *shoppingList;

@property (strong, nonatomic) NSString *shoppingCart;

@end
ViewController.m
#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Add your code below!
    self.shoppingList = [shoppingList initWithArray: @"toothpaste", @"bread", @"eggs"];
}

@end

Note the code pasted in is just ONE of many many attempts...

2 Answers

Chris Shaw
Chris Shaw
26,662 Points

Hi Erick,

To create a new NSArray instance we need to create it via alloc which creates a new instance in memory, then we need to use the initWithObjects method to add 3 objects to it, the other thing to note is you always need nil as the last value as it defines the end of the array in memory.

self.shoppingList = [[NSArray alloc] initWithObjects:@"toothpaste", @"bread", @"eggs", nil];

Happy coding!

Oh crap. I remember using that exact syntax in one of my attempts, but in none of them did I use 'nil'. Ugh.

Thank you very much for help!