Dudas y recursos para programas que no están en ninguno otro de los foros.
Avatar de Usuario
por Toño
#4333 Según el video 26 del Megacurso, habla de CoreData. Al insertar el código en AddTableViewController, me da una cantidad enorme de errores. Consigue por internet de alguien que tenia el mismo problema, al copiar y pegar el código, me sigue dando un error que no logro resolver.
Este es el código:
if let manageObjectContext = (UIApplication.shared.delegate as? AppDelegate)?.managedObjectContext {
restaurant = NSEntityDescription.insertNewObject(forEntityName: "Restaurant", into: manageObjectContext) as? Restaurant
restaurant.name = nameTextField.text
restaurant.type = typeTextField.text
restaurant.location = locationTextField.text
restaurant.image = imageView.image!.pngData() as NSData?
restaurant.isVisited = isVisited as NSNumber

var e: NSError?
if manageObjectContext.save() != true { // Error que sale =Binary operator '!=' cannot be applied to operands of type '()' and 'Bool'
print("insert error: \(e!.localizedDescription)")

}
}
Adjuntos
Captura de pantalla 2019-05-03 a las 19.51.43.png
adjunto pantallazo del error
Avatar de Usuario
por Toño
#4336 El enlace es interesante, pero no me ayuda, gracias. He sorteado los problemas hasta aqui, ya que el codigo que se enseña en todos los videos corresponden al swift2, y el lenguage ha evolucionado bastante, no ha sido facil cuando empiezas desde cero. Solo espero como minimo la solucion de los profesores del megacurso sobre este problema, ya que ofrecen los videos actualizados y hasta ahora no ha sido asi.
Un saludo.
Avatar de Usuario
por Ludwig Suarez
#4337 ¡Hola Sr. Toño!

En este caso, su error se debe a la versión del Swift, este curso esta diseñado para ir avanzando desde lo más básico a lo mas avanzado, es por eso que parece no estar actualizado pero si lo están. Cuando los Megacursos se actualizan estos son actualizados en algunas partes del curso y no todo el curso desde su inicio, es importante que vaya conociendo como avanza el curso y los cambios que se van dando con las diferentes versiones. No siempre ira a programar y conseguirá la versión con la que usted aprendió, puede conseguir versiones mas nuevas pero también las más viejas y si ya conoce el proceso de programar en una versión sabrá como resolver en las anteriores o en las más actuales.

Yo le recomiendo que continué el curso y si tiene la posibilidad de descarga una versión del Swift2 lo haga y luego cambia de versión.
Avatar de Usuario
por Ludwig Suarez
#4339 Hola Sr. Toño;

Core Data es un sistema de persistencia. Por tanto, lo primero que deberíamos ver, es en que consiste la Persistencia que no es más que la acción de preservar la información de un objeto de forma permanente (guardarlo), unido a la posibilidad de poder recuperar la información del mismo (leerlo) para que pueda ser nuevamente utilizado, la persistencia nos permite guardar los datos de nuestras aplicaciones para poder utilizarlos cuando el usuario vuelva a ejecutar nuestra app.

Si desarrollamos una aplicación que no integre ningún sistema de persistencia, todos los datos que vayamos utilizando durante la ejecución de la misma simplemente se escribirán en memoria. ¿Qué quiere decir esto? Quiere decir que al estar únicamente almacenados en memoria y no en disco, en la siguiente ejecución de la app, todos estos datos se perderán.

En Desarrollo iOS existen varios sistemas de persistencia, diferentes “herramientas” que podemos utilizar como desarrolladores para guardar los datos de nuestras aplicaciones.

Aquí tienes algunos de ellos:
NSUserDefaults
Property Lists
NSFileManager
SQLite
Core Data

Core Data es un Framework de Persistencia desarrollado por Apple que nos permite simplificar la gestión del modelo de datos de nuestras aplicaciones, suele utilizarse a través de una base de datos de tipo SQLite. Pero el valor que realmente nos aporta, son una serie de herramientas que nos facilitan tanto la creación del modelo de nuestra app como la gestión posterior desde nuestro código. Además, esta capa que envuelve nuestra base de datos SQLite nos permite que nosotros como desarrolladores no tengamos que trabajar directamente con sentencias SQL.

Conceptos Fundamentales

NSManagedObjectModel
Es la representación de nuestro Modelo en disco.

NSManagedObject
El objeto NSManagedObject representa un objeto único almacenado en Core Data.

NSManagedObjectContext
Representa algo parecido a un “espacio de memoria temporal” donde poder trabajar antes de guardar los datos.

Si piensas en como guardar un objeto con Core Data, podríamos decir que se trata de un proceso de dos pasos. Primero insertas el objeto en el managed object context y una vez que estás seguro puedes confirmar el guardado del objeto almacenándolo en disco.

Xcode genera automáticamente un managed object context en nuestras aplicaciones siempre que activemos la opción Use Core Data al crear el proyecto.

Concretamente el managed object context se almacena en una propiedad del appDelegate, por lo que cuando necesites utilizarlo lo primero que tendrás que hacer será crear una referencia al appDelegate de tu aplicación.

NSEntityDescription
El objeto que describe una Entidad en Core Data. Una instancia de NSEntityDescription determina el nombre de la entidad, sus atributos y relaciones y la clase por la que está representada.

NSFetchRequest
Es la clase responsable de recuperar datos de Core Data. Para recuperar estos datos, utilizaremos peticiones a las que especificaremos una serie de criterios. Estas peticiones son bastante potentes. Puedes utilizar fetchRequest para recuperar un conjunto de objetos que cumplan unas determinadas condiciones. Por ejemplo: “Dame todos los usuarios que se hayan dado de alta en el último mes y que hayan realizado alguna publicación en nuestra app”. NSFetchRequest utiliza calificadores para filtrar los resultados que queremos obtener.

Acá te dejo unos link;
https://riptutorial.com/es/core-data
https://www.youtube.com/watch?v=8vZKraeuiJU