使用这段代码,因为 我希望 NSDate 属性始终从当前日期开始,并且永远不允许用户选择过去的日期。
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:0];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[shiftDatePicker setMinimumDate:minDate];
用你的UIDatePicker
名字代替我的名字。
你的第一个问题的答案有点理论化。但我希望你能理解。
首先你应该在你的UIViewController
. 从输入的用户中获取值CoreData
并匹配。如果用户输入了更大的值,那么没有问题。如果它小于或等于先前的值,则向他们显示错误。
将此用于您的第一个问题。
- (NSFetchRequest *)getBasicRequestForEntityName: (NSString *)entityName
{
//Get Fetch request for particuler entity.
NSManagedObjectContext * managedObjectContext = [[AppDelegate getAppdelegate] managedObjectContext];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
return request;
}
-(NSMutableArray*)getAllRequestedShifts
{
NSFetchRequest *request = [self getBasicRequestForEntityName:@"YOUR ENTITY NAME"];
[request setReturnsObjectsAsFaults:NO];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"previous value" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
NSError *error = nil;
NSArray *results = [[managedObjectContext executeFetchRequest:request error:&error]mutableCopy];
NSMutableArray *arr=[NSMutableArray array];
if (!error && [results count] > 0)
{
for (int k=0; k<[results count]; k++)
{
YourentityObject *requestShiftObj = [results objectAtIndex:k];
[arr addObject:requestShiftObj];
}
}
return arr;
}
在您的- (void)viewDidLoad
方法中使用此行
NSMutableArray* arrayOfSentRequest=[self getAllRequestedShifts];
这将返回您的所有对象的列表,这些对象位于您CoreData
的顶部,最大值对象。
检索此对象并使用属性previousvalue并与正在输入的值进行比较,并根据算法生成结果。
使用此代码
NSDateFormatter* dateF = [[NSDateFormatter alloc] init];
[dateF setDateFormat:@"YYYY-MM-dd"];
NSString *currentDate=[dateF stringFromDate:[NSDate date]];
NSDate * currentDateObj=[dateF dateFromString:currentDate];
NSDate * shiftDateFieldObj=[dateF dateobjectfromDB];
NSTimeInterval timeDifferenceBetweenDates = [shiftDateFieldObj timeIntervalSinceDate:currentDateObj];
if (timeDifferenceBetweenDates>0.0)
{
Enter the value to text field ;
}
else
{
show alert
}
希望这可以帮助。