【问题标题】:Incompatible pointer types initializing 'NSDate初始化'NSDate的不兼容指针类型
【发布时间】:2013-03-22 15:51:47
【问题描述】:

我正在设置一些常量,一个是 NSDate 但收到了这条警告消息:

使用NSString 类型的表达式初始化NSDate *const __strong 的不兼容指针类型

代码简单说明(imp文件):

NSDate *const kPAPUserBirthdayKey = @"fbBirthday";

进阶说明: 我使用一个常量文件作为一个单例,为我写入的 API 保存常量变量。例如上面是一个日期字段,它将在连接到 Facebook 时保存 facebook 用户的生日。

这随后将用于以下转换:

// Convert the DOB string into Date format
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM/dd/yyyy"];
NSDate* userDOB = [df dateFromString:user.birthday];
[[PFUser currentUser] setObject:userDOB forKey:kPAPUserBirthdayKey];

有人可以解释警告的实际含义以及此处应更改的内容吗?我在上面的最后一行得到了同样的错误?

【问题讨论】:

    标签: ios objective-c pointers nsstring nsdate


    【解决方案1】:
    NSDate *const kPAPUserBirthdayKey = @"fbBirthday";
    

    您正在为 NSDate 分配一个字符串。

    NSDate 更改为NSString

    用途:

    NSString const *kPAPUserBirthdayKey = @"fbBirthday";
    

    还要检查你需要什么?

    A constant pointer or pointer to a constant.

    【讨论】:

    • @CarlVeazey:再次抱歉,错字小姐,解释得很好但复制并忘记将 nsdate 更改为 nsstring :( 而且你经常投反对票。从来没有怜悯。
    • 好的,我想这更多地与它的使用/实现方式有关。 fbBirthday 是一个正确的字符串,但它只是日期将被输入的标题/列。因此,输入的实际数据将是一个日期,如下所示 - [[PFUser currentUser] setObject:userDOB forKey:kPAPUserBirthdayKey];
    【解决方案2】:
    NSDate *const kPAPUserBirthdayKey                               = @"fbBirthday";
    

    这里fbBirthday 是一个字符串而不是日期。警告是这样说的。

    【讨论】:

      【解决方案3】:

      将常量的类型更改为 NSString。编译器告诉你你在不兼容的类型之间进行赋值,因为 NSString 不是 NSDate 的子类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-16
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多