2016-04-24 3 views
1

Я пытаюсь записать данные в постоянное хранилище с помощью контекста управляемого объекта. вставляя простые статические данные. save не возвращает никаких ошибок, но fetch не возвращает никаких результатов. вот мой код:Основные данные управляемый объект контекст сохранение не работает

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyDB" withExtension:@"momd"];` 

NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

NSAssert(mom!=nil, @"Error in initializing Managed Object Model"); 

NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom]; 
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 
[moc setPersistentStoreCoordinator:psc]; 
[self setManagedObjectContext:moc]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSURL *documentsURL = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
NSURL *storeURL = [documentsURL URLByAppendingPathComponent:@"MyDB.sqllite"]; 

NSError *error = nil; 
NSPersistentStoreCoordinator *pscStore = [moc persistentStoreCoordinator]; 
NSPersistentStore *store = [pscStore addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]; 
NSAssert(store!=nil,@"Error in initializing PSC:%@\n%@",[error localizedDescription],[error userInfo]); 

//insert 
Schedule *schedule = [NSEntityDescription insertNewObjectForEntityForName:@"Schedule" inManagedObjectContext:moc]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *sessionEndDateReturned = [NSDate alloc]; 
sessionEndDateReturned = [dateFormatter dateFromString:@"24-04-2016"]; 
NSDate *sessionStartDateReturned = [NSDate alloc] ; 
sessionStartDateReturned = [dateFormatter dateFromString:@"25-04-2016"]; 

//schedule.category = @"cat"; 
schedule.about = @"testabout"; 
schedule.endDate = sessionEndDateReturned; 
schedule.eventId = @"e1"; 
schedule.sessionID = @"s1"; 
schedule.roomNumber = @"r1"; 
schedule.startDate = sessionStartDateReturned; 
schedule.topic = @"topic1"; 
schedule.type = @YES; 
NSLog(@"inserted objs:%@",moc.insertedObjects); 
//save 
NSError *insertError = nil; 
if(![moc save:&insertError]){ 
    NSLog(@"%@ %@",insertError,insertError.localizedDescription); 
} 

//fetch 
NSFetchRequest *fetchReq = [NSFetchRequest fetchRequestWithEntityName:@"Schedule"]; 
NSError *fetchError = nil; 
NSArray *result =[moc executeRequest:fetchReq error:&fetchError]; 
if(fetchError){ 
    NSLog(@"fetch Error: %@",fetchError.localizedDescription); 
} 
else 
{ 
    NSLog(@"myFetch Result:%@",result); 
} 

Может кто-нибудь сказать мне, где я иду не так?

ответ

1

все в порядке, кроме приведенного выше кода. требуется только небольшое изменение. Сохранить происходит нормально, проблема только с извлечением. изменить выборки выполнить с ниже строки:

NSArray *result =[moc executeFetchRequest:fetchReq error:&error];

я делал ExecuteRequest вместо executeFetchRequest: |

Смежные вопросы