2012-02-27 4 views
1

私はデータベースを維持する目的でコアデータフレームワークを使用するアプリケーションを開発しています。私のエンティティには、アプリケーションのリストの名前、開始時刻、終了時刻という3つの属性があります。私はnameとstart time属性に正しい値を得ています。
私の問題は、次のエントリの開始時刻の値を含むべきです。もしこれについて何か考えている人がいたら私に知らせてください。コアデータの特定の属性を更新する

ありがとう

答えて

0

次のエンティティを作成するまで、endTime属性は空白のままにできます。エンティティの+ Createカテゴリでは、最後の/最初のオブジェクトを取得し(順序付きエンティティを使用していると仮定します)、endTimeを新しいstartTimeに使用されているのと同じ値で更新します。

オブジェクトが注文されていない場合は、すべてのエンティティがセットに含まれているため、少しトリッキーになる可能性があります。しかし、NSOrderedSetがlastObject(とfirstObject)に応答するので、順序付けされていれば良いです。ここで、1)銘柄記号のための既存の在庫エンティティを返すか、2)そのシンボルのための新しいエンティティを作成し、いずれの例ファクトリメソッドである:

は、

ダミアン

EDITを楽しみ。エンティティを取得し、ソート順に応じて最初/最後を選択するように簡単に変更しました。再びHegarty教授のコアデータクラスを参照してください。

+ (Stock *)stockForSymbol:(NSString *)symbol inManagedObjectContext:(NSManagedObjectContext *)context { 
    Stock *stock = nil; 

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Stock"]; 
    request.predicate = [NSPredicate predicateWithFormat:@"symbol = %@",symbol]; 
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"symbol" ascending:YES]; 
    request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

    NSError *error = nil; 
    NSArray *matches = [context executeFetchRequest:request error:&error]; 

    if (!matches || [matches count] > 1) { 
     // handle error 
    } else if ([matches count] == 0) { 
     stock = [NSEntityDescription insertNewObjectForEntityForName:@"Stock" inManagedObjectContext:context]; 
     stock.symbol = symbol; 
     stock.strategyPosition = [NSNumber numberWithInt:StrategyPositionFlat]; 
     stock.userPosition = stock.strategyPosition; 
     stock.userOwns = [NSNumber numberWithBool:NO]; 
    } else { 
     stock = [matches lastObject]; 
    } 
    return stock; 
} 
+0

私は管理オブジェクトコンテキストのインスタンスを2回作成する必要がありますか? – NNR

+0

確かにそうではありません - あなたがしているのは、2番目のファイルを作成するときに最初に取得することです。 1分でコード例を付けるつもりですが、私がこれについて学んだのは、Paul HegartyのStanford "iPad and iPhone Application Development"コースの2つのCore Dataクラスです。これらのレッスンは重要であり、コアデータエンティティのカテゴリとファクトリメソッドについてすべて説明します。私は単純なものを投稿します。 –

+0

ありがとうございます。 – NNR

関連する問題