1

私はこのモデルを持っています:

@interface Data : NSObject
@property int Period; 
@property (nonatomic, assign) NSDate *Start;
@property (nonatomic, assign) NSDate *End;
@end

@implementation Data
@synthesize Period, Start, End;
@end

可変配列にデータを追加します。

@property (strong, nonatomic) NSMutableArray* myArray;
self.myArray = [NSMutableArray arrayWithCapacity:0];

Data *element1 =[ [Data alloc] init];
element1.Period = 1;
element1.Start = dateStart1;
element1.End = dateEnd1;
[self.myArray addObject:element1];

Data *element2 =[ [Data alloc] init];
element2.Period = 2;
element2.Start = dateStart2;
element2.End = dateEnd2;
[self.myArray addObject:element2];

Data *element3 =[ [Data alloc] init];
element3.Period = 3;
element3.Start = dateStart3;
element3.End = dateEnd3;
[self.myArray addObject:element3];

配列から開始日を抽出できます

Data * extractDateStart = [self.myArray valueForKey:@"Start"];
NSLog(@"All Start Dates: %@", extractDateStart);

特定の日付 (ユーザーによって挿入された) が 3 つの期間のどれであるかを検索するには、その配列を循環させる必要があります。

「通常の」配列からデータを抽出する方法を知っています:

for(NSString * extractDate in self.myArray) {
    NSLog(extractDate);
}

また、ある日付を別の日付と比較する方法も知っています。

  switch ([dateInserted compare: date]) {
    case NSOrderedAscending:
        // dateInserted old than date
      break;
    case NSOrderedSame:
        // dateInserted the same then date
      break;
    case NSOrderedDescending:
        // dateInserted new then date 
      break;
    default:
        // generic error
      break;
}

しかし、この場合の移動方法は?

4

1 に答える 1

1

私はあなたの質問を理解していないかもしれませんが、あなたのように聞こえます:

  • ユーザーに提供してもらうNSDate
  • がとの日付の間にDataあるオブジェクトを検索したいNSDateStartEnd

その場合、次のようなものが機能するはずです。

NSDate *dateToFind = ...;
Data *foundData = nil; // We will put the correct Data object here if we find it    

for (Data *data in self.myArray) {
    // Test that dateToFind is between data.Start and data.End
    if (([dateToFind compare:data.Start] != NSOrderedAscending) 
            && ([dateToFind compare:data.End] != NSOrderedDescending)))
    {
        foundData = data; // dateToFind is in this Data's date range
    }
}

// foundData is either nil or contains the Data you were looking for

日付が他の 2 つの日付の間にあるかどうかをテストする他の良い方法については、この質問を参照してください

于 2012-12-08T19:47:56.837 に答える