Aprendendo a Lição

Estou desenvolvendo um pequeno app de controle de horas, para ajudar a retomar os meus estudos em Objective C e Cocoa.

Já adianto o que eu descobri(depois de 2 dias de luta, coisa de principiante), em um NSDocument, os objetos que você cria pelo Interface Builder, só estarão instanciados depois que o XIB for carregado(lógico, mas só agora que caiu a ficha). E não só para o NSDocument, mas pra qualquer outra classe que você utilize o IB e crie objetos por ele.

O meu drama foi que eu estava tentando ler um arquivo salvo pelo meu app, porém o objeto que seria instanciado foi criado dentro do XIB.

Havia colocado todo o meu código para instanciar o objeto no método readFromData:ofType:error:, porém depois que esse fulano é chamado ele cria um novo NSDocument e só depois de o XIB ser carregado o meu objeto contido nele pode ser utilizado. Estranhamente sempre depois do XIB criado o meu objeto anteriormente instanciado ficava como nil. Eeeee júnior!!!

Fora que eu também já queria dar um “refresh” nos NSTextField do NSDocument antes mesmo de ele saber que iria tomar vida. Burro, burro, burro!!!

Depois de aprendida a lição, agora é só juntar os pedaços dos snippets que eu andei fazendo pra montar esse pequeno app de controle de horas.

Nada melhor que uma necessidade para começar a desenvolver

Bom o meu Hello World para o Mac foi o Date Converter, quis replicar um utilitário que tenho na plataforma Windows, para o Mac.

Mas antes mesmo de criá-lo, já tinha em mente um outro aplicativo para ajudar o meu aprendizado no Objective-C e o Cocoa. É um pequeno aplicativo para controle de horas por atividade.

Atualmente trabalho para uma consultoria e ganho por hora, eles disponibilizam um sistema(que não é lá essas coisas) pra você apontar as suas horas e ao fim do mês receber o quanto foi trabalhado. Apesar de trabalhar desenvolvendo sistemas, sempre fico com o pé atrás em confiar os meus dados em um único lugar, ainda mais quando se trata do tão suado ordenado, então sempre tenho um controle paralelo, seja em planilhas ou no caderno+lapis.

Pensei em aproveitar esse minha necessidade para criar um aplicativo, simples, para guardar essas informações, e com algumas funcionalidades bestas pra ajudar o lançamento no sistema da consultoria.

A grosso modo, a aplicativo seria um Table View que deverá ser armazenado em disco. Porém será necessário ter algo como um relatório para totalizar as horas por mês, cliente, tarefa, whatever.

Já comecei e parei infinitas vezes ele, mas recentemente fiz uns snippets para algumas tarefas então já vou tomar vergonha e começar a esboçar algo. Mesmo que seja o grosso, da Table View gravar um arquivo binário, já é um começo.