首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHFetchOptions谓词与NSDate比较

PHFetchOptions谓词与NSDate比较
EN

Stack Overflow用户
提问于 2016-06-09 15:22:17
回答 1查看 726关注 0票数 1

你好,我一直在使用Photos.framework,但现在我只能在文档中对PHFetchOptions类进行谓词比较,我看到我们可以在谓词中使用startDate。所以我的代码是

代码语言:javascript
复制
@interface ViewController ()
{
    NSMutableArray * moments;
}



@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    moments = [NSMutableArray array];

    if([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusNotDetermined)
    {
        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
            [self loadCollections];
        }];
    }else
    {
        [self loadCollections];
    }

}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self loadCollections];
}


- (NSDate*)dateAddingDays:(NSInteger)days ToDate:(NSDate*)argDate
{
    NSCalendar * gregorian = [NSCalendar currentCalendar];

    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"dd.MM.yyyy"];
    NSString * dateString = [formatter stringFromDate:argDate];
    NSDate * toWorkDate = [formatter dateFromString:dateString];

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:days];
    NSDate *date = [gregorian dateByAddingComponents:comps toDate:toWorkDate  options:0];
    NSLog(@"%@",[formatter stringFromDate:date]);
    return date;
}

- (void)loadCollections
{
    PHFetchOptions * options = [[PHFetchOptions alloc]init];

    options.predicate = [NSComparisonPredicate predicateWithFormat:@"startDate > CAST(%d,\"NSDate\")",[self dateAddingDays2:-1 ToDate:[NSDate date]].timeIntervalSince1970];
    PHFetchResult * result = [PHAssetCollection fetchMomentsWithOptions:options];

    if(result != nil)
    {
        NSLog(@"%i",result.count);
        for (int i = 0; i < result.count; i++) {
            NSLog(@"%@",[result objectAtIndex:i]);
            [moments addObject:[result objectAtIndex:i]];
        }
    }

}

所以我的问题是,我需要从一天前去取福托斯,我能做到这一点!任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-09 16:07:27

这就是答案,基本上是我替换了

代码语言:javascript
复制
- (NSDate*)dateAddingDays:(NSInteger)days ToDate:(NSDate*)argDate
{
    NSCalendar * gregorian = [NSCalendar currentCalendar];

    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"dd.MM.yyyy"];
    NSString * dateString = [formatter stringFromDate:argDate];
    NSDate * toWorkDate = [formatter dateFromString:dateString];

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:days];
    NSDate *date = [gregorian dateByAddingComponents:comps toDate:toWorkDate  options:0];
    NSLog(@"%@",[formatter stringFromDate:date]);
    return date;
}

通过

代码语言:javascript
复制
- (NSDate*)yesterday
{
    NSCalendar * gregorian = [NSCalendar currentCalendar];
    return [gregorian startOfDayForDate:[gregorian dateByAddingUnit:NSCalendarUnitDay value:-1 toDate:[NSDate date] options:NSCalendarWrapComponents]];
}

同时也替换了这个

代码语言:javascript
复制
options.predicate = [NSComparisonPredicate predicateWithFormat:@"startDate > CAST(%d,\"NSDate\")",[self dateAddingDays2:-1 ToDate:[NSDate date]].timeIntervalSince1970];

通过这个

代码语言:javascript
复制
options.predicate = [NSComparisonPredicate predicateWithFormat:@"(startDate > %@)",[self yesterday]];

现在正在工作!感谢@Larme

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37730102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档