Почему NSMutableArray продолжает возвращать значение null?

#objective-c #methods #nsmutablearray #ddmathparser

#objective-c #методы #nsmutablearray #ddmathparser

Вопрос:

Я генерирую случайное уравнение, например 2*3 4….. и использовать DDMathParser для его оценки. Здесь у меня есть метод класса, который должен возвращать случайное уравнение (хранящееся внутри изменяемого массива), только если оно вычисляется до целого числа. однако он продолжает возвращать значение Null, и я не могу понять, почему. Пожалуйста, помогите мне.!

 #import "Equation.h"
#import "DDMathParser.h"

@implementation Equation
-(NSMutableArray*)randEquation{
    NSMutableArray* usableEquation=[[NSMutableArray alloc]init];
    while(1){
    NSArray *nums = @[@"1", @"2", @"3", @"4", @"5",@"6",@"7",@"8",@"9"];
    unsigned index1=arc4random()%9;
    NSString* num = [NSString stringWithFormat:@"%@", [nums objectAtIndex:index1]];
    NSArray *symbols = @[@" ", @"-", @"*", @"/"];
    unsigned index=arc4random()%4;
    NSString* symb = [NSString stringWithFormat:@"%@", [symbols objectAtIndex:index]];
        NSMutableArray *arrayOfSymbolsAndNumbers = [[NSMutableArray alloc] init];
        for( int i=0;i<=10;i  ){
            if (i%2==0) {
                [arrayOfSymbolsAndNumbers addObject:num];
            }
            else{
                [arrayOfSymbolsAndNumbers addObject:symb];
            }

        }
        NSMutableString *stringOfSymbolsAndNumbers=[[NSMutableString alloc]init];
        for (NSObject * obj in arrayOfSymbolsAndNumbers)
        {
            [stringOfSymbolsAndNumbers appendString:[obj description]];


        }
        usableEquation=arrayOfSymbolsAndNumbers;
        NSNumber *result=[stringOfSymbolsAndNumbers numberByEvaluatingString];
        float resultFloat = [result floatValue];
        float checker=resultFloat;
        if (floor(checker)==checker) {
            break;
        }
        else{
            continue;
        }
    }
    return usableEquation;
}

@end
 

Комментарии:

1. Как вы проверяете nil возврат? Какую отладку вы выполнили?

2. В раскадровке я попробовал NSLog с возвращаемым массивом, используя NSLog(@»Содержимое массива равно%@», [рандомизация уравнения]); и вывод на моей консоли: содержимое массива равно (null). Также я устанавливаю заголовки некоторых кнопок на содержимое этого массива, и заголовки не устанавливаются.

3. В предыдущем комментарии в: NSLog(@»Содержимое массива равно%@», [рандомизация уравнения]); «уравнение — это просто экземпляр моего класса «Equation».

4. Узнайте, как выполнять отладку. Начните с точки исключения, выясните, какое значение равно нулю, и возвращайтесь к тому месту, где это значение генерируется.

Ответ №1:

NSLog(@»Содержимое массива равно%@», [рандомизация уравнения]);

Исходя из вашего кода, для вывода этого журнала The content of array is(null) equation значение равно нулю. Ваш randEquation (хотя и неэффективный) выглядит нормально, проблема в том, что вы не создали equation экземпляр при запуске инструкции log.