【问题标题】:_NSDate length unrecognized selector sent to instance_NSDate 长度无法识别的选择器发送到实例
【发布时间】:2015-03-02 02:01:00
【问题描述】:

我正在尝试将 NSString 转换为 NSDate

NSString destructString 是 2015-01-04 08:36:42 +0000

我知道问题是从我在下面评论的地方开始的,但我似乎找不到问题所在。

程序在该点停止并在标题中给出错误。

代码的重点是比较两个日期以查看哪个日期更旧。

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];


NSDate *today = [[NSDate alloc]init];



[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if(!error){
    for(PFObject* object in [self objects]){
        NSLog(@"OBJECT:  %@", object);
        PAWPost *post = [[PAWPost alloc] initWithPFObject:object];
        NSLog(@"post: %@", post);
        NSLog(@"today: %@", today);

        NSString *destructString = [post.object objectForKey:selfDestructDateKey];
            NSLog(@"destruct string: %@", destructString);

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];

        [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"];

        //SOURCE OF PROBLEM BEGINS HERE
        NSDate *destructDate = [dateFormat dateFromString:destructString];

        NSLog(@"destruct date: %@", destructDate);

        if([destructDate compare:today] == NSOrderedDescending){
            [object deleteEventually];
            NSLog(@"DESCENDING");
        }

        else
            NSLog(@"NOT DESCENDING");

    }

    }else {

        NSLog(@"Error in findObjectsInBackgroundWithBlock for destruct purposes");
    }
}];

我也知道关于这个主题还有另一篇文章,但是我已经尝试过修复(正在重做格式),但它并没有解决问题。提前致谢!

【问题讨论】:

  • 看起来 [post.object objectForKey:selfDestructDateKey] 已经返回给你 NSDate object ))
  • 我现在感觉很笨,但感谢它有效! :)
  • 请检查我的答案,可以证明我的猜测

标签: ios objective-c nsstring nsdate


【解决方案1】:

如果对象的类型可以变化,你应该像我添加到你的代码一样添加类型检查

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if(!error){
    for(PFObject* object in [self objects]){
        NSLog(@"OBJECT:  %@", object);
        PAWPost *post = [[PAWPost alloc] initWithPFObject:object];
        NSLog(@"post: %@", post);
        NSLog(@"today: %@", today);

        id destructString = [post.object objectForKey:selfDestructDateKey];
            NSLog(@"destruct string: %@", destructString);
     if ([destructString isKindOfClass:[NSDate class]]) { // already date 
           NSDate * destructDate = (NSDate *)destructString;
     } else { // parse string  
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];

        [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"];

        //SOURCE OF PROBLEM BEGINS HERE
        NSDate *destructDate = [dateFormat dateFromString:destructString];

        NSLog(@"destruct date: %@", destructDate);

        if([destructDate compare:today] == NSOrderedDescending){
            [object deleteEventually];
            NSLog(@"DESCENDING");
        }

        else
            NSLog(@"NOT DESCENDING");
}
    }

    }else {

        NSLog(@"Error in findObjectsInBackgroundWithBlock for destruct purposes");
    }
}];

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多