@@ -10,6 +10,8 @@ import Foundation
1010import CoreData
1111
1212// MODEL para abstração dos dados
13+ // TODO: refatorar nome para Item, os Models devem ser vistos como entidades
14+ // (objetos) e não tabelas de db
1315class Itens : NSManagedObject {
1416
1517 /// mapeamento do campo "nome" para String
@@ -19,6 +21,7 @@ class Itens: NSManagedObject {
1921 ///
2022 /// :param: objectContext Conexão com o CoreData
2123 /// :param: nome Nome para salvar
24+ ///
2225 class func criaNovoObjeto( objectContext: NSManagedObjectContext , nome: String ) -> Itens {
2326 let newItem = NSEntityDescription . insertNewObjectForEntityForName ( " Itens " , inManagedObjectContext: objectContext) as! Itens
2427
@@ -27,4 +30,76 @@ class Itens: NSManagedObject {
2730
2831 return newItem
2932 }
33+
34+ /// Função para buscar todos os dados do CoreData
35+ ///
36+ /// :param: managedObjectContext contexto a ser manipulado
37+ ///
38+ class func buscarTodos( managedObjectContext: NSManagedObjectContext ) -> [ Itens ] {
39+ let listagemCoreData = NSFetchRequest ( entityName: " Itens " )
40+
41+ // ordena os resultados alfabetica pelo campo "nome"
42+ let orderByName = NSSortDescriptor ( key: " nome " , ascending: true , selector: " caseInsensitiveCompare: " )
43+
44+ // define o filtro de ordenação
45+ listagemCoreData. sortDescriptors = [ orderByName]
46+
47+ // executa a busca e retorna os valores no array itens
48+ return managedObjectContext. executeFetchRequest ( listagemCoreData, error: nil ) as? [ Itens ] ?? [ ]
49+ }
50+
51+ /// Função para encontrar um Item por nome
52+ ///
53+ /// :param: nome Nome do item para buscar
54+ /// :param: managedObjectContext contexto a ser manipulado
55+ ///
56+ class func buscar( nome: String , inManagedObjectContext managedObjectContext: NSManagedObjectContext ) -> Itens ? {
57+ let fetchRequest = NSFetchRequest ( entityName: " Itens " )
58+ fetchRequest. predicate = NSPredicate ( format: " nome = %@ " , nome)
59+
60+ let result = managedObjectContext. executeFetchRequest ( fetchRequest, error: nil ) as? [ Itens ]
61+ return result? . first
62+ }
63+
64+ /// Função para verificar se já existe um registro com esse nome
65+ ///
66+ /// :param: nome Nome do item para buscar
67+ /// :param: managedObjectContext contexto a ser manipulado
68+ ///
69+ class func itemExistente( nome: String , inManagedObjectContext managedObjectContext: NSManagedObjectContext ) -> Bool {
70+ return buscar ( nome, inManagedObjectContext: managedObjectContext) != nil
71+ }
72+
73+ // MARK: - Init
74+
75+ convenience init ( nome: String , inManagedObjectContext managedObjectContext: NSManagedObjectContext ) {
76+ let entity = NSEntityDescription . entityForName ( " Itens " , inManagedObjectContext: managedObjectContext) !
77+ self . init ( entity: entity, insertIntoManagedObjectContext: managedObjectContext)
78+ self . nome = nome
79+ }
80+
81+ // MARK: -
82+
83+ /// Função para apagar um item do CoreData
84+ ///
85+ /// :param: managedObjectContext contexto a ser manipulado
86+ ///
87+ func apagar( managedObjectContext: NSManagedObjectContext ) {
88+ managedObjectContext. deleteObject ( self )
89+ }
90+
91+ /// Função para salvar os dados no CoreData
92+ ///
93+ /// :param: managedObjectContext contexto a ser manipulado
94+ ///
95+ func salvar( managedObjectContext: NSManagedObjectContext ) {
96+ var error : NSErrorPointer = nil
97+
98+ // se a ação salvar falhar, imprime erro
99+ if ( managedObjectContext. save ( error) ) {
100+ if ( error != nil ) {
101+ println ( " Erro ao salvar: \( error. debugDescription) " )
102+ }
103+ }
104+ }
30105}
0 commit comments