2012-03-03 9 views
0

UPDATE関係を保存しない:
を、私は問題を発見:起動時にアプリ、DBをアップグレードするために、私は、すべての活動をダウンロードしたすべてのDBを削除し、活動を挿入します。
したがって、参照は失われます。
ありがとうございます!コアデータ:起動中に


私の関係を保存する際に問題があります。それはうまく動作しますが、私はシミュレータを停止し、再び起動すると関係はなくなりました! これは私のコードです。 ///////////////////

+ (BOOL) createViajeWithJson:(NSString *)responseJson dictParams:(NSDictionary *)dictParams{ 

    MOViaje *viaje = (MOViaje *)[NSEntityDescription insertNewObjectForEntityForName:@"Viaje" inManagedObjectContext:ApplicationDelegate.managedObjectContext]; 
    viaje.nombre = [dictParams valueForKey:@"nombreViaje"]; 
    viaje.destino = [dictParams valueForKey:@"destino"]; 
    viaje.timestamp = [NSDate date]; 


    NSArray *results = [responseJson JSONValue]; 

    for (id object in results){ 
     // get the entity previously saved. 
     MOActivity *tmpActivity = [MOActivity getActivityById:(NSNumber *)object]; 
     if (tmpActivity != nil) { 
      [viaje addActivitiesViajeObject:tmpActivity]; 
      [tmpActivity addViajeObject:viaje]; 
     } 
    }  

    viaje.numActividades = [NSNumber numberWithInt:[results count]];  

    NSManagedObjectContext *moc = ApplicationDelegate.managedObjectContext; 
    NSError *error = nil; 
    if (![moc save:&error]) { 
     // Save failed 
     NSLog(@"Core Data Save Error: %@, %@", error, [error userInfo]); 
     return NO; 
    } 
    return YES; 
} 

私は、この関数を呼び出す 'actvities' を得ました。

+ (NSArray *) getAllActivitiesFromViaje:(MOViaje *) viaje { 
    NSArray *temp = [viaje.activitiesViaje allObjects] ; 
    return temp; 
} 

i「はVIAJE」を作成し、関係の活動」を追加した後、それは8を返しますが、私は、シミュレータを停止し、再び再起動したときに、それはあなたの助けのための0

感謝を返します!

+0

[CoreDataHelper commitDefaultMOC]が動作しないようです。 – NeverBe

+0

このコード:NSManagedObjectContext * moc = ApplicationDelegate.managedObjectContext; \t NSError * error = nil; \tもし(![MOC保存:&エラー]){ \t \t //保存に失敗した \t \tのNSLog(@ "コアデータの保存エラー:%の@、%の@"、エラー、[エラーのUserInfo]); \t \t return NO; \t} \t return YES; – user380257

+0

非常に奇妙な、保存後に[moc save]のエラーを出力しようとします。たぶん[mac save]はTRUEですが、エラーはnilではありません – NeverBe

答えて

0

[results count]viaje.numActividadesに保存しています。しかし、あなたのループでは、JSON結果を既存のIDを持つviajeに追加するだけです。一致するアクティビティの数は明らかにゼロです。

IDに期待する値があるかどうかを確認し、getActivityByIdメソッドが正しく機能するかどうかを確認してください。

+0

あなたの答えをありがとうが、私がgetAllActivitiesFromViajeを呼び出すと、それは** 8 **アクティビティを返します。その後、シミュレータを停止し、この呼び出しは** 0 ** actvitiesを返します。 – user380257

+0

あなたが記述する方法はすべて手巻きです。ちょうど '[viaje activities] .count'を使って正しい値を得てください。再度、IDを持つスキームはおそらく欠陥があります。 – Mundi

+0

こんにちはムンディ、私はgetAllActivitiesFromViajeを呼び出すとき、私はアクティビティ(8)の配列を得て、私はそれらを(基本的にリスト情報)使用することができます。その後、私はシミュレータを閉じ、私は0のアクティビティを得ました。 – user380257

関連する問題