方法调用后NSArray不包含任何内容

时间:2014-03-11 09:47:37

标签: ios objective-c

我正在调用一个方法,将两个数组传递给它,如下所示:

NSArray *marked_dates = [NSArray arrayWithObjects:[dateFormat dateFromString:@"19/03/2014"],[dateFormat dateFromString:@"17/04/2014"],[dateFormat dateFromString:@"12/02/2014"], nil];
NSArray *marked_colors = [NSArray arrayWithObjects:[UIColor greenColor],[UIColor greenColor],[UIColor greenColor],nil];
[calendar markDates:marked_dates withColors:marked_colors];

以下是接收此方法的方法:

-(void)markDates:(NSArray *)dates withColors:(NSArray *)colors {
    self.markedDates = dates;
    self.markedColors = colors;

    NSLog(@"%@",[NSString stringWithFormat:@"%d",[dates count]]);

    for (int i = 0; i<[self.markedDates count]; i++) {
        NSLog(@"%@",[NSString stringWithFormat:@"%@", self.markedDates[i]]);
    }

    [self setNeedsDisplay];
}

日志显示0,我显然没有进入for循环。

感谢您的帮助。

编辑: 我还将投票支持有关警告的任何信息:“格式字符串不是字符串文字”

在属性声明之下:

@property (nonatomic, retain) NSArray *markedDates;
@property (nonatomic, retain) NSArray *markedColors;

编辑:

所以是的,形成器给出了空值。 我是这样做的:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSLog(@"%@",[NSString stringWithFormat:@"%@",[dateFormat dateFromString:@"19/03/2014"]]);
//this prints "null"

使用解决方案进行编辑:

错误,我错误配置了格式化程序 用这个对我有用,谢谢大家的帮助。

[dateFormat setDateFormat:@"dd/MM/yyyy"];

3 个答案:

答案 0 :(得分:2)

由于日期格式化程序仅生成nil值,因此日期数组可能为空。修复日期格式化程序,以便正确生成NSDate个对象,它应该可以工作:

[dateFormat setDateFormat:@"dd/MM/yyyy"];

答案 1 :(得分:0)

[dateFormat setDateFormat:@"dd/MM/yyyy"]; ?

答案 2 :(得分:0)

首先,您不应将属性名称和Local实例变量创建为同名。因为属性是自己创建带有_Property名称的实例var。问题在于行。

NSArray *marked_dates = [NSArray arrayWithObjects:[dateFormat dateFromString:@"19/03/2014"],[dateFormat dateFromString:@"17/04/2014"],[dateFormat dateFromString:@"12/02/2014"], nil];

也添加日期格式。 再看一遍。如果你仍然面临同样的问题,请告诉我。