Como você armazena dados do NSMutable Array no Core Data?
O aplicativo que estou fazendo desenha umPolyline
com base nas coordenadas dos usuários deCLLocationManager
(tudo isso é mantido em umNSMutableArray
)
Quando o aplicativo é fechado, a polilinha atual desaparece. Como posso armazenar a matriz de pontos no CoreData a ser recuperada quando o aplicativo é iniciado? Todas as 'rotas' anteriores que o usuário seguiu desde o início do aplicativo devem ser recuperadas e sobrepostas no mapa (o que pode ser bastante, portanto o CoreData parece ser a melhor opção do que reuni).
Este é o código que eu uso para criar um MKPolyline a partir das coordenadas carregadas
-(IBAction)didClickLoadCoordinates:(id)sender {
// get a reference to the appDelegate so you can access the global managedObjectContext
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Route"];
NSError *error;
id results = [appDelegate.managedObjectContext executeFetchRequest:request error:&error];
if ([results count]) {
polyLine = (Route *)(results[0]);
NSArray *coordinates = polyLine.coordinates;
int ct = 0;
for (CLLocation *loc in coordinates) {
NSLog(@"location %d: %@", ct++, loc);
}
// this copies the array to your mutableArray
_locationsArray = [coordinates mutableCopy];
}
NSInteger numberOfSteps = _locationsArray.count;
//convert to coordinates array to construct the polyline
CLLocationCoordinate2D clCoordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [_locationsArray objectAtIndex:index];
CLLocationCoordinate2D coordinate2 = location.coordinate;
clCoordinates[index] = coordinate2;
}
MKPolyline *routeLine = [MKPolyline polylineWithCoordinates:clCoordinates count:numberOfSteps];
[_mapView addOverlay:routeLine];