比较NSArray元素与NSNumber

时间:2018-08-06 07:31:36

标签: objective-c arrays if-statement

我不熟悉目标c。我正在从NSArray获取数据,并希望根据某些条件返回值。我的代码是:

  NSArray *myData;
  NSNumber *day = 5;

  myData = [NSArray arrayWithObjects: @"5", nil];

  for (int i = 0; i < [myData count]; i++) {
      if(day == myData[0]){
      NSLog(@"date in valueForDay %@ ", da );
       return 3;
   }
 }

以上代码不会执行我的语句(NSLogreturn一个)。 但是,如果我将日期与任何数字静态比较,它就会执行。喜欢:

  NSArray *myData;
  NSNumber *day = 5;

  myData = [NSArray arrayWithObjects: @"5", nil];

  for (int i = 0; i < [myData count]; i++) {
      if(day == 5){
      NSLog(@"date in valueForDay %@ ", da );
       return 3;
   }
 }

有人可以告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

您使用字符串值而不是数字值创建了数组。这就是为什么数组中的对象是"5",它不等于整数5。将数组设为数字数组。

myData = [NSArray arrayWithObjects: @5, nil];

也可以使用indexOfObject来检查是否有对象,而不是for循环。

NSInteger index = [myData indexOfObject: day];
if(index != NSNotFound) {
    return 3;
}

答案 1 :(得分:0)

您将NSString存储在NSArray中。并与NSNumber进行比较。如果有条件,则必须在上面添加一行,然后更改条件。

NSString *myString = [day stringValue];
if([myString isEqualToString:myData[0]])