NSManagedObject 的描述显示值,但访问它们显示 NaN?

Posted

技术标签:

【中文标题】NSManagedObject 的描述显示值,但访问它们显示 NaN?【英文标题】:Description of NSManagedObject shows values, but accessing them shows NaN? 【发布时间】:2014-04-11 20:15:16 【问题描述】:

我在这里找到了excellent solution,用于在迁移模型时创建关系。我在模型本身中遇到了一个奇怪的问题。

-(BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError *__autoreleasing *)error

    NSError *superError = nil;
    BOOL ismappingSuccess = [super createRelationshipsForDestinationInstance:dInstance entityMapping:mapping manager:manager error:&superError];
    if (ismappingSuccess && [dInstance.entity.name isEqualToString:@"FTEvent"])
        FTEvent *event = (FTEvent*)dInstance;
        NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:event.date_time];

...

event.date_time 有一个奇怪的问题,我期待一个值,但在调试器中它显示为 (NsTimeInterval) NaN 而不是实际值。

但是,当我打印事件描述时,我可以清楚地看到提供的日期值。当我执行event.date_time 时,它怎么可能显示NaN

Printing description of event:
<NSManagedObject: 0xbbb9b80> (entity: FTEvent; id: 0xbbbab90 <x-coredata://069BC324-2002-4DBA-879A-DC085C645903/FTEvent/p1> ; data: 
    "date_time" = "2014-04-10 23:00:00 +0000";
    "is_deleted" = 0;
    key = "4F6646FF-4110-427F-B2FD-3CFCAF777793";
    notes = Fdsfdsfd;
    rating = 1;
    record = nil;
    timestamp = "2045-04-11 01:19:06 +0000";
)

FTEvent:

@class FTRecord;

@interface FTEvent : NSManagedObject

    BOOL is_edited;


@property (nonatomic) NSTimeInterval date_time;
@property (nonatomic) BOOL is_deleted;
@property (nonatomic, retain) NSString * key;
@property (nonatomic, retain) NSString * notes;
@property (nonatomic) int16_t rating;
@property (nonatomic) NSTimeInterval timestamp;
@property (nonatomic, retain) FTRecord *record;

【问题讨论】:

date_time 是如何在模型中实际定义的。您的描述看起来像 NSDate 而不是 NSTimeInterval。 感谢您的帮助。我已经用模型定义更新了这个问题。顺便说一句,只能访问字符串,例如event.notes。但是rating也无法访问,它是int。 【参考方案1】:

我刚刚找到它。它可以作为键/值对访问。

错误:

[event date_time]

正确:

NSDate *date_time = [event valueForKey:@"date_time"];

我有错误的印象,它会使用模型上的属性。

【讨论】:

以上是关于NSManagedObject 的描述显示值,但访问它们显示 NaN?的主要内容,如果未能解决你的问题,请参考以下文章

提取到 2 个不同上下文中的 NSManagedObject 具有不同的属性值

如何根据现有的 NSManagedObject 值在 NSManagedObject 派生类中设置默认值?

为将来的 NSManagedObject 插入更改某些属性的默认值?

Xcode 中 NSManagedObject 属性的默认值

创建 NSManagedObject 属性值的副本

NSManagedObject changedValues 忽略字符串值