2

我有一个使用以下方法的 NSDate 类别

@implementation NSDate (DateUtility)

+(NSString *)dateTimeStringForDB {
    NSDateFormatter *dateFormatForDB = [[NSDateFormatter alloc] init];
    [dateFormatForDB setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *aDateStr= [dateFormatForDB stringFromDate:self];
    [dateFormatForDB release];
    return aDateStr;    
}
@end

有了这个定义,我收到了警告。

不兼容的指针类型将“类”发送到“NSDate *”类型的参数

但是,在将其分配为参数之前键入转换 self 会抑制此警告。

+(NSString *)dateTimeStringForDB
{
    NSDateFormatter *dateFormatForDB = [[NSDateFormatter alloc] init];
    [dateFormatForDB setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *aDateStr= [dateFormatForDB stringFromDate:(NSDate*)self];
    [dateFormatForDB release];
    return aDateStr;    
}

我们真的不能在不进行类型转换的情况下将 self 作为参数传递给类别吗?这个特性依赖于什么,编译器?在实际将其作为问题发布之前寻找答案我遇到了这个,但是我仍然不清楚幕后发生了什么。

4

1 回答 1

6

你已经创建了一个类方法,我怀疑你真的想要一个实例方法。我假设您想将NSDate(即对象)的实例转换为NSString表示形式。目前您正在尝试将实际NSDate类转换为NSString表示形式。

改变

+(NSString *)dateTimeStringForDB {

-(NSString *)dateTimeStringForDB {
于 2012-10-26T05:53:03.303 回答