Joel Hooks
Joel Hooks

Reputation: 6565

Casting an NSObject to NSString

I am working through the Stanford iPhone class and I can't figure out why I am getting a compiler warning. I assume I need to cast my object to NSString, but I get an error when I try to do so. The code runs and gives me the expected output, but the warning bothers me.

NSLog(@"lowerCaseString is: %@", [object lowercaseString]);

This runs with the warning: 'NSObject' may not respond to '-lowerCaseString'

NSLog(@"lowerCaseString is: %@", [(NSString)object lowercaseString]);

This throws an error: conversion to non-scalar type requested

Upvotes: 10

Views: 32869

Answers (2)

Adam Alexander
Adam Alexander

Reputation: 15180

I believe this will do what you need:

NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]);

Note I just added a * to your second line of code to make a pointer to NSString.

Upvotes: 24

Chuck
Chuck

Reputation: 237010

Why is object declared as an NSObject if it's supposed to be an NSString? If you intend to call NSString methods on it, declare it as an NSString or leave it as an id. Then you won't get errors.

Upvotes: 3

Related Questions