【问题标题】:Why does NSMutablearray keep returning null?为什么 NSMutablearray 一直返回 null?
【发布时间】:2014-06-28 10:38:52
【问题描述】:

我正在生成一个随机方程,比如 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

【问题讨论】:

  • 您如何检查nil 回报?你做了什么调试?
  • 在故事板中,我使用 NSLog(@"The content of array is%@",[equation randEquation]);我的控制台上的输出是:数组的内容是(空)。此外,我将一些按钮的标题设置为该数组的内容,并且没有设置标题。
  • 在之前的评论中:NSLog(@"数组的内容是%@",[equation randEquation]); “方程只是我的类“方程”的一个实例。
  • 了解如何调试。从异常点开始,找出哪个值为 nil,然后返回到生成该值的位置。

标签: objective-c methods nsmutablearray ddmathparser


【解决方案1】:

NSLog(@"数组的内容是%@",[equation randEquation]);

根据您的代码,此日志输出The content of array is(null) 意味着equation 为零。您的randEquation(虽然效率不高)看起来不错,问题是您在运行日志语句时还没有创建equation 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多