2010-09-28 10 views

Respuesta

15

Lo más parecido en Cocoa es 'Observación de valores-clave'. En la estructura Cocoa de escritorio puede usar enlaces para enganchar elementos de la interfaz de usuario hasta objetos subyacentes para que los cambios en los objetos o elementos de la IU se reflejen en la otra.

Mientras Cacao en iOS no tiene este tipo de fijaciones de la interfaz de usuario, todavía se puede utilizar 'valor-clave Observando' para sincronizar los cambios en el modelo de datos con elementos de la interfaz como se describe aquí:

http://developer.apple.com/library/iOS/#documentation/General/Conceptual/Devpedia-CocoaApp/KVO.html

+2

No pude conseguir el enlace de arriba para que funcione, pero el siguiente enlace funcionó para mí. http://developer.apple.com/library/iOS/#documentation/General/Conceptual/Devpedia-CocoaApp/KVO.html –

+2

ese enlace está borrado, también –

+6

[Guía de programación de Key-Value - Búsqueda de Google] (http://www.google.com/search?client=safari&rls=en&q=Key-Value+Coding+Programming+Guide&ie=UTF-8&oe=UTF-8&redir_esc=&ei=M-TWT_33O66hmQW__aTxAg) Espero que este sea un enlace más confiable :) – nacho4d

3

No se olvide NSFetchedResultsController.

No es un controlador de datos completo, pero hace que las vistas de tabla sean mucho más fáciles de usar con Core Data.

1

Uso CoreDataTableViewController de la Universidad de Stanford para mis TableViewControllers. Oculta una gran cantidad de detalles que normalmente implementaría en su TableViewController.

Google para CoreDataTableViewController.h y .m te ayudarán en el camino. Hay versiones de varios cursos disponibles, la última hace ARC, las anteriores no.

Para sincronizar etiquetas y editar campos con un NSManagedObject, sigo buscando una buena solución.

15

Escribí una pequeña biblioteca de código abierto que proporciona algunas funciones simples de enlace de datos. Básicamente es solo un contenedor de observación de valores-clave (KVO).

Hay algunas otras bibliotecas similares en GitHub:

+0

Enlace http://github.com/jonsterling/Observe está roto –

12

Probablemente también hay que mencionar de Github Reactive Cocoa, un marco para componer y la transformación de secuencias de valores, una versión objetivo-C de .NET de Reactive Extensions (Rx).

mecánica de vinculación puede realizarse muy simple (de la muestra):

// RACObserve(self, username) creates a new RACSignal that sends a new value 
// whenever the username changes. -subscribeNext: will execute the block 
// whenever the signal sends a value. 
[RACObserve(self, username) subscribeNext:^(NSString *newName) { 
    NSLog(@"%@", newName); 
}]; 
3

Si está utilizando Swift, echa un vistazo marco Bond: https://github.com/ReactiveKit/Bond

La unión es tan simple como:

textField.reactive.text.bind(to: label.reactive.text) 

Se juega bien con funcionales:

textField.reactive.text 
    .map { "Hi " + $0 } 
    .bind(to: label.reactive.text) 

y proporciona observaciones simples:

textField.reactive.text 
    .observeNext { text in 
    print(text) 
    } 
0

Sí, existe un marco de enlace de datos que se integra bien en el Interface Builder y sólo requiere sobrecarga código mínimo (si es todas).

Tome un vistazo a https://github.com/mutech/aka-ios-beacon

EDIT: Por ejemplo, puede obligar a una vista de tabla a un controlador resultados exagerado simplemente estableciendo la propiedad de unión a la fuente de datos de la tabla general constructor de interfaces a:

[ yourResultsController ] { defaultCellMapping: "YourCellId" }

Y lo único que tiene que hacer es definir una propiedad yourResultsController en su controlador de vista.

El wiki proporciona una documentación bastante completa y muchos ejemplos de casos de uso.

Cuestiones relacionadas