2014-03-28 167 views
0
NSArray *theArray = [[notification userInfo] objectForKey:@"myArray"]; 
for (NSDictionary * dict in theArray) { 

    CustomerOrder * newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"CustomerOrder" 
                  inManagedObjectContext:self.managedObjectContext]; 

    [newEntry setValue:[dict objectForKey:@"customer_id"] forKey:@"customer_id"]; 
    [newEntry setValue:[dict objectForKey:@"ExecutedOrderCount"] forKey:@"executedOrderCount"]; 
    [newEntry setValue:[dict objectForKey:@"order_id"] forKey:@"order_id"]; 
    [newEntry setValue:[dict objectForKey:@"outletLatitude"] forKey:@"outletLatitude"]; 
    [newEntry setValue:[dict objectForKey:@"outletLongitude"] forKey:@"outletLongitude"]; 
    [newEntry setValue:[dict objectForKey:@"trigger_days"] forKey:@"trigger_days"]; 

    [newEntry setValue:[dict objectForKey:@"trigger_end_date"] forKey:@"trigger_end_date"]; 
    [newEntry setValue:[dict objectForKey:@"trigger_from_time"] forKey:@"trigger_from_time"]; 
    [newEntry setValue:[dict objectForKey:@"trigger_no_days"] forKey:@"trigger_no_days"]; 

    [newEntry setValue:[dict objectForKey:@"trigger_radius"] forKey:@"trigger_radius"]; 
    [newEntry setValue:[dict objectForKey:@"trigger_start_date"] forKey:@"trigger_start_date"]; 
    [newEntry setValue:[dict objectForKey:@"trigger_to_time"] forKey:@"trigger_to_time"]; 

    NSLog(@"Log %@", newEntry); 

    [SharedAppDelegate saveContext]; 
} 
+0

我建議你使用newEntry [@ 「trigger_radius」] =字典[@ 「trigger_radius」 ]。它使你的代碼更具可讀性。另外,請說明如何保存上下文,並顯示如何知道它未保存(即顯示您的獲取代碼)。 – Joride

+0

我已經將[sharedAppDelegate savecontext]更改爲 [newEntry.managedObjectContext save:&err] NSLog(@「error:%@」,err.localizedDescription);我已經完成了它,我不知道如何獲取.I' m手動檢查sqllite瀏覽器,顯示沒有找到表格。請提供一些幫助。 – user3420042

+0

新入口也許是零?你的日誌語句的輸出是什麼?你還可以顯示抓取代碼嗎?你檢查BOOL的save:方法返回嗎? – Joride

回答

-1

您在self.managedObjectContext創建實體,而是爲節省話費[SharedAppDelegate saveContext];

你可以嘗試後NSLog

NSError * err = nil; 
[newEntry.managedObjectContext save:&err]; 

NSLog(@"error: %@", err.localizedDescription); 

和循環調用保存在之後添加以下代碼父上下文

__weak typeof (self) weakSelf; 
[self.managedObjectContext.parentContext performBlock:^(){ [weakSelf.managedObjectContext.parentContext save:NULL] }]; 
+0

錯誤越來越null.but在數據庫中,如果我檢查沒有創建表,它顯示。 – user3420042

+0

你如何檢查? – sage444

+0

這是我的文件路徑,我用sqllite瀏覽器打開它。 ///Users/vishnuemani/Library/Application%20Support/iPhone%20Simulator/7.1/Applications/4BC11011-F80F-41C7-870A-99F3666E678F/Documents/CoreData.sqlite – user3420042

0

只是使用

NSEntityDescription *entityDesc=[NSEntityDescription entityForName:@"CustomerOrder" inManagedObjectContext:self.managedObjectContext]; 
NSFetchRequest *request=[[NSFetchRequest alloc]init]; 
[request setEntity:entityDesc]; 
NSManagedObject * newEntry =[[NSManagedObject alloc]initWithEntity:entityDesc insertIntoManagedObjectContext:self.managedObjectContext]; 
    .... 


NSError *error;     
[self.managedObjectContext save:&error]; 

希望這將有助於..

0

試試這個代碼

NSArray *theArray = [[notification userInfo] objectForKey:@"myArray"]; 
for (NSDictionary * dict in theArray) { 

//TypeCast here 

CustomerOrder* newEntry = (CustomerOrder *)[NSEntityDescription insertNewObjectForEntityForName:@"CustomerOrder" 
                 inManagedObjectContext:self.managedObjectContext]; 

[newEntry setValue:[dict objectForKey:@"customer_id"] forKey:@"customer_id"]; 
[newEntry setValue:[dict objectForKey:@"ExecutedOrderCount"] forKey:@"executedOrderCount"]; 
[newEntry setValue:[dict objectForKey:@"order_id"] forKey:@"order_id"]; 
[newEntry setValue:[dict objectForKey:@"outletLatitude"] forKey:@"outletLatitude"]; 
[newEntry setValue:[dict objectForKey:@"outletLongitude"] forKey:@"outletLongitude"]; 
[newEntry setValue:[dict objectForKey:@"trigger_days"] forKey:@"trigger_days"]; 

[newEntry setValue:[dict objectForKey:@"trigger_end_date"] forKey:@"trigger_end_date"]; 
[newEntry setValue:[dict objectForKey:@"trigger_from_time"] forKey:@"trigger_from_time"]; 
[newEntry setValue:[dict objectForKey:@"trigger_no_days"] forKey:@"trigger_no_days"]; 

[newEntry setValue:[dict objectForKey:@"trigger_radius"] forKey:@"trigger_radius"]; 
[newEntry setValue:[dict objectForKey:@"trigger_start_date"] forKey:@"trigger_start_date"]; 
[newEntry setValue:[dict objectForKey:@"trigger_to_time"] forKey:@"trigger_to_time"]; 

NSLog(@"Log %@", newEntry); 

//Save all 
NSError *error = nil; 
if (![self.managedObjectContext save:&error]) { 
// Handle Error 
     NSLog(@"Save Error: %@, %@", error, [error userInfo]); 
    return NO; 
    } 

}