No known class method for selector


I am getting this error when I compile my code, but can’t seem to figure out why. I’ve checked the book and as far as I can tell I have everything typed in correctly. The error is “No Known class method for selector stringWithFormat.”

This is the section of code it is happening in:

NSString *randomName = [NSString stringWithFromat:@"%@ %@", [randomAdjectiveList objectAtIndex:adjectiveIndex], [randomNounList objectAtIndex:nounIndex]];

And this is my full BNRItem.h file:

#import "BNRItem.h"

@implementation BNRItem

+ (id)randomItem;
    // Create and array of three adjectives
    NSArray *randomAdjectiveList = [NSArray arrayWithObjects:@"Fluffy",
                                    @"Shiney", nil];
    // Create an array of three nouns
    NSArray *randomNounList = [NSArray arrayWithObjects:@"Bear",
                               @"Mac", nil];
    // Get the index of a random adjective/noun from the lists
    // Note: the % operator, called the modulo operator, gives
    // you the remainder. So adjectiveIndex is a random number
    // from 0 to 2 inclusive.
    NSInteger adjectiveIndex = rand() % [randomAdjectiveList count];
    NSInteger nounIndex = rand() % [randomNounList count];
    //Note that NSInteger is not an object, but a type definition
    // for "unsigned long"
    NSString *randomName = [NSString stringWithFromat:@"%@ %@",
                            [randomAdjectiveList objectAtIndex:adjectiveIndex],
                            [randomNounList objectAtIndex:nounIndex]];
    int randomValue = rand() % 100;
    NSString *randomSerialNumber = [NSString stringWithFormat:@"%c%c%c%c%c",
                                    '0' + rand() % 10,
                                    'A' + rand() %26,
                                    '0' + rand() %10,
                                    'A'+rand() %26,
                                    '0' + rand() % 10];
    BNRItem *newItem = 
    [[self alloc] initWithItemName:randomName
    return newItem;

- (id)initWithItemname:(NSString *)name
          serialNumber:(NSString *)sNumber
    // Call the superclass's designated initializer
    self = [super init];
    // Did the superclass's designated initializer succeed?
    if (self) {
    // Give the instance variables initial values
    [self setItemName:name];
    [self setSerialNumber:sNumber];
    [self setValueInDollars:value];
    dateCreated = [[NSDate alloc] init];
    // Return the address of the newly initialized object
    return self;
- (id)init
    return [self initWithItemName:@"Item"

- (void)setItemName:(NSString *)str
    itemName = str;
- (NSString *)itemName
    return itemName;

- (void)setSerialNumber:(NSString *)str
    serialNumber = str;

-(NSString *)serialNumber
    return serialNumber;

- (void)setValueInDollars:(int)i
    valueInDollars = i;

- (int)valueInDollars
    return valueInDollars;

- (NSDate *)dateCreated
    return dateCreated;

- (NSString *)description
    NSString *descriptionString = 
    [[NSString alloc] initWithFormat:@"%@ (%@): Worth $%d, recorded on %@",
    return descriptionString;


This is my first time learning to code of any sort, so any help is greatly appreciated as I am still learning what to look for when troubleshooting.


You have misspelled the Format

NSString *randomName = [NSString stringWithFromat:@"%@ %@",

You have written “Fromat”.

Try correcting the spelling mistake and give it another try.

Hope this helps.



It worked perfectly. I was so focused on researching the error I didn’t notice the typo. Thank you again.