0

Core Data Utilityチュートリアルに従っており、カスタム管理対象オブジェクトクラスを実装しました。ビルドと実行は正常ですが、値が正しくないようです。私のCDCLI.cdcliファイルは次のようなオブジェクトでいっぱいです:

<object type="RUN" id="z114">
    <attribute name="processid" type="int64">1334</attribute>
    <attribute name="date" type="date">369155986.60885798931121826172</attribute>
</object>

その「日付」属性は日付のようには見えません。日付とprocessID属性は次のように設定されています。

// Attribute: Date
NSAttributeDescription *dateAttribute = [[NSAttributeDescription alloc] init];

[dateAttribute setName:@"date"];
[dateAttribute setAttributeType:NSDateAttributeType];
[dateAttribute setOptional:NO];

// Attribute: Process ID
NSAttributeDescription *idAttribute = [[NSAttributeDescription alloc] init];

[idAttribute setName:@"processID"];
[idAttribute setAttributeType:NSInteger64AttributeType];
[idAttribute setOptional:NO];
[idAttribute setDefaultValue:[NSNumber numberWithInteger:-1]];

次の方法に基づいて、processID属性値として「0」を受け取ることを期待していましたが、そうではありません。

- (void)setNilValueForKey:(NSString *)key {

    if ([key isEqualToString:@"processID"]) {
        self.processID = 0;
    } else {
        [super setNilValueForKey:key];
    }
}

実際、そのメソッドにいくつかのNSLogステートメントを追加すると、呼び出されていないことがわかります。これを理解する必要があります。

日付とprocessID属性がどのように見えるかを誰かが知っているので、正しい値を取得していることを確認できますか?

4

1 に答える 1

1

日付の値は私には良さそうです。内部形式は、基準日 (2001 年 1 月 1 日、GMT) からの秒数です。その値は約 11.7 年であり、妥当な日付のようです。

同様に、1334 のプロセス ID は、PID の適切な値のようです。

最後に、コードで次のようにします。

if ([key isEqualToString:@"ProcessID"]) {

ただし、属性名に一貫性がないように思われる場合の使用法。ログにはprocessid、最初のコード セットは が使用processIDされ、2 番目のコード セットは が使用されていることが示されますProcessID

于 2012-09-12T16:50:19.470 に答える