1

I've written this piece of code:

    for (int i = 1; i < 1000; i++) {
        for (int j = 1; j < 1000; j++) {
            int k = i * j;

            //This is the line were the error messages appears
            NSString *number = [NSString stringWithFormat:@"%d", k];

            NSNumber *length = number.length;
            NSNumber *half = (length / 2);

What I want it to do, is to take the int k, convert it into a NSString named number, store the length of the string number in the NSNumber length, and half of that value in the NSNumber half.

However, when trying to convert the int k to the NSString number I get the error message:

"Implicit conversion of 'NSInteger' (aka 'unsigned int') to 'NSNumber *' is disallowed with arc"

Could someone help me figure out why?

  • 1
    Possible duplicate of [Implicit conversion of NSInteger error](http://stackoverflow.com/questions/13957558/implicit-conversion-of-nsinteger-error) – Teja Nandamuri Dec 30 '15 at 13:50

1 Answers1

4

number.length returns integer not NSNumber.

Correct it to :

NSInteger length = number.length;
NSInteger half = (length / 2);

If you really want to use NSNumber do like this: (Here I am boxing the integer to NSNumber object)

NSNumber *length = @(number.length); //same as [NSNumber numberWithInt:number.length]
NSNumber *half = @(number.length / 2);
Anoop Vaidya
  • 46,283
  • 15
  • 111
  • 140