Hice una lista de tareas en tutoriales usando NSMutableArray como la lista y NSObject con propiedades como un solo elemento. Quiero almacenar los datos para no perderlos cada vez que se abra la aplicación. ¿Cómo puedo hacer esto?

Utilice Realm.io!

Es un reemplazo para Core Data y SQL, e increíblemente fácil de usar. Solo use NSUserDefaults para almacenar configuraciones de usuario único, no lo use para múltiples objetos del mismo tipo.

Una implementación básica con Realm es solo unas pocas líneas de código, y si ha almacenado sus datos en una clase personalizada, lo más probable es que pueda extenderlos desde RLMObject (Objective-C) u Object (Swift) directamente.

Eche un vistazo a la documentación: https://realm.io/docs/swift/latest/

Aquí hay una muestra de código (de los documentos):

  // Define tus modelos como clases regulares de Swift
 clase Perro: Objeto {
   nombre var dinámico = ""
   var dinámica edad = 0
 }
 Clase Persona: Objeto {
   nombre var dinámico = ""
   imagen var dinámica = NSData ()
   let dogs = List  ()
 }

 // Úsalos como objetos Swift normales
 let mydog = Perro ()
 mydog.name = "Rex"
 println ("nombre del perro: \ (mydog.name)")

 // Persiste tus datos fácilmente
 let realm = Reino ()
 realm.write {
   realm.add (mydog)
 }

 // Consulta desde cualquier hilo
 dispatch_async (dispatch_queue_create ("fondo", 0)) {
   realm.objects (Dog) .filter ("age> 8") // => Resultados 
 }

NSUserDefaults es en realidad una práctica realmente mala para poner su objeto personalizado para ser honesto. Es un truco realmente vago. NSUserDefaults se usa más para almacenar específicamente configuraciones de usuario, como una ID de sesión de Facebook, la ID de usuario, etc.

Funcionará y será fácil, pero este es realmente un trabajo para la serialización. Core Data es demasiado hinchado / sobrecarga para algo como esto.

NSUserDefaults no es el mejor lugar para almacenarlo, pero definitivamente es factible. Sería más apropiado simplemente escribir en la carpeta Documentos en un archivo. La forma más fácil que se me ocurre es convertir su estructura a NSData, luego simplemente puede usar el método writeToFile: atomically: de la instancia de datos para guardar. La carga es igualmente fácil, así:

NSData * data = [[NSFileManager defaultManager] contentsAtPath: ruta de archivo];

3 formas principales de conservar algo en iOS:

NSUserDefaults: sin seguridad pero de la manera más fácil, solo debe ser para presencias
Archive el objeto usted mismo – Guía de programación de archivos y serializaciones
Datos centrales

NSUserDefaults es solo una .plist que no tiene que trabajar para usar y que no se garantiza que almacene una gran cantidad de datos. Puede hacer lo mismo con su propio .plist y .plist manager singleton (o no singleton, ¿qué me importa?)

Desbordamiento de pila: iOS: ¿cómo escribir datos en plist?

Checkout nscoding