Hvordan filtrere og summere i #CoreData? #iphone #ios

Jeg har skaffet meg et fantastisk verktøy for å gjøre databaseprogrammering på iPhone som heter Sensible Table View (STV) og er fra Sensible Cocoa.

Men da jeg skulle igang med litt mer avanserte filter og tilhørende summeringer, ble jeg sittende fast, ikke et par timer, men en hel uke. Dokumentasjonen av Apples Core Data synes jeg er svært akademisk, og de fem bøkene jeg har om dette er dårlige.

Hintene som hjalp meg fant jeg på Stack Overflow etter å ha søkt etter @sum in core data på Google.

Sammen med Apples dokumentasjon klarte jeg tilslutt å løse problemet innenfor rammene av det nye verktøyet. Etter en ukes slit, ser løsningen latterlig enkel ut. Her er den:

  • Predicate: bare bruk løsningen i STV! Pass bare på å lage predikatet slik:

    filterPredicate:[NSPredicate predicateWithFormat:@“account like ‘kreditt’”]];

  • summering er så uskyldig som dette:

    NSNumber *balance = [transactionSection.items valueForKeyPath: @“@sum.amount”];

    self.title = balance.stringValue;

Dette er vidunderlig! Jeg kan bruke predikater i STV til å lage små og pene datasets, og beregne summen på datasettet i ettertid. Plutselig er det igjen morsomt å være database-programmerer!

Having fun programming old iPhone default binding while waiting for the new – @sensiblecocoa

While we a looking forward to the release on Wednesday, I thought programming old Apple stuff could shorten the time…

User default binding, is a way that your iPhone app can store a list of values in it’s storage, and use the list when restarting the program.

Sensible Table View 3.0 new introduction book, has a nice example at page 35. The example is unbelievable short, and just tell you to do a setup as in Section 3, and writing less than thirty lines.

The example use a SCUserDefaultsDefinition and the normal SCPropertyDefinition, and make the whole magically appear with:

[self.tableViewModel generateSectionsForUserDefaultsDefinition: userDefaultsDef];

The hard task was in fact not to do the initial setup correct…

Hvordan kan et par hundre millioner få politiet opp på IT nivå som hindrer en ny #22juli?

Det kan være interessant å se på oppgavene mobil IT skal løse for politiet.

Kommunikasjon

Sett utenfra, og med 22 juli rapporten i bakhodet, ser det ut til at tekst og tale-kommunikasjon samt GPS tjenester var noe av det som sviktet mest. Nød-nettet hadde mangelfull dekning. Politiets tradisjon med å lese ut informasjon på nettet, istedet for å sende dette som tekst, forsterket problemene, da operasjonssentralene ble overbelastet.

Hvis politiet hadde vært godt utstyrt med moderne mobiler, nettbrett og GPS i bilene, og hatt rutiner i å bruke eksisterende løsninger i kommunikasjonen, kunne de bedre møtt en krise som 22 juli.

Driftsikkerhet og kryptering

Det offentlige har gjentatte ganger hevdet at de trenger bedre kommunikasjon enn folk flest, f.eks. nød-nett, krisenettet, jernbanens mobilnett. Det hevdes at det trengs bedre driftsikkerhet og å hindre tilgang fra andre.

Men hvordan skal disse små nettene kan komme i nærheten av kvaliteten vi har på det store offentlige mobil-nettet?

Men “IT strategien” skygger og hindrer alt

Det nye IT systemet for straffesaksbehandling er en forutsetning for å sette den nye straffeloven av 2005 i kraft. I dag sa Faremo, at det nye systemet ikke ville være operativt før i 2015 eller 2016.

Politiet har arbeidet med å skaffe seg et sentralisert IT system i 14 år, uten å bestemme seg for en løsning. Kanskje ligger ikke løsningen i et sentralisert system, men istedet et desentralisert system som bare virker.

Det leveres nå mobilt IT utstyr som de fleste nordmenn bruker. Dette utstyret leveres hovedsaklig som mobiler og nettbrett, koblet sammen i nettskyen. Å skulle levere hver politimann/kvinne en smarttelefon og nettbrett koster under ti tusen pr. ansatt. Det samme kan en anta for en politibil. For enkelhets skyld setter jeg at det er en politibil pr. 10 politimenn.

Men hva skal i tilfelle politiet velge?

Sikkerhet i kommunikasjonsenheter som mobiler og nettbrett ligger blant annet i hvordan produsentene prioriteter personsikkerhet. Noen produsenter vektlegger nettleverandørene, andre brukerne. Apple er en produsent som krypterer informasjon over nettet og andre å få tak I brukerens opplysninger.

Fredag ble dommen om illegal kopiering av Apple sine mobiler og nettbrett offentliggjort. I første omgang rammes bare Samsung, som er produsent av maskinvare. Det ligger imidlertid i kortene at Google og Android er de egentlig skyldige.

Det kan kanskje være et poeng for politiet å velge en leverandør som ikke er dømt for å stjele ideer, er innbegrepet av brukervennlighet og er markedsleder.

Og hva vil det koste?

Mitt forslag er at 14 tusen politimenn og ca. 1400 politibiler utstyres med iPhone og iPad i år. I tillegg velges det ut hvordan en kan bruke standard programvare for gruppe- og massekommunikasjon. Denne programvaren koster typisk 8 til 80 kroner per enhet.

Hvis en regner med at dette vil koste ti tusen til hver mann og bil, vil dette koste samfunnet 154 millioner kroner.

Jens Stoltenberg kan simpelthen gjennomføre dette. Dette er innenfor allerede vedtatte bevilgninger. Han kan rett og slett:

Vise ansvar og gjennomføringevne

Vi er mange som kan være med å finne og tilpasse apper som kan bringe politiet inn denne mobile IT verden hvor 70% av Norges befolking allerede befinner seg.

Stoltenbergs, mer åpenhet og demokrati, har vist vi trenger mer ansvarlighet og gjennomføringevne

Morgen vi fikk høre hva forferdelig som skjedde på Utøya #22juli

Morgen vi fikk høre hva forferdelig som skjedde på Utøya #22juli

Stoltenberg ville møte 22 juli med mer demokrati og mer åpenhet. Med kommisjonens rapport har han levert. Bra!

22 juli rapporten viser svakheter i det norske samfunnet som ble fatale, da vi ble angrepet – som manglende ansvar og gjennomføringevne. Bedre!

Media konkretiserer 22 juli svakhetene, og viser at de finnes også i andre deler av samfunnet – som i skolebygg og brannvesen. Best!

Nylig har det bli avdekket skrikende mangelfullt vedlikehold av skoler, og et nytt nødnett som er uegnet i brannvesenets operasjoner.

Media stiller også daglig ledere for etatene som feilet til veggs. Noen av lederne skjønner alvoret, andre ikke:

  • Meland skjønte ikke alvoret. Han kommenterte kommisjonens rapport med å si at den var lik deres egenproduserte rapport. Noen dager etter forlot han stillingen sin.
  • Rettskommisjonen har enda ikke skjønt alvoret. Derfor vil det samme skje der, som i politidirektoratet.

I oppfølgingen av 22 juli rapporten, fyller virkelig media sin funksjon. Best!

Et mulig fremtidsmotto?

Mer åpenhet og mer demokrati, var Stoltenbergs svar på 22 juli. Han har levert, kommisjonen har levert til gangs, media følger opp og et ørlite håp tennes i oss – kanskje kan Stoltenbergs eller en ny leder formulere at vi skal møte terroristtrusselen med:

Mer åpenhet, ansvar og gjennomføringevne.

Tenk hvor godt det kunne bli å møte fremtiden da…

Hands-on with database framework @sensiblecocoa. #STV30 finally documented – still a bit of black magic to me…

I dropped using my lovely Mac SE30 in the early nineties because of lack of good databases, and moved back to Windows until 2010. SQLite and Core Data seemed powerful enough to serve my need of prototyping and building enterprise application. Alas – they weren’t.

Being fostered on Paradox databases first, and later MS SQL Server, Core Data on iOS is a hell of complications.

Enter Sensible Table View (STV) Framework

Last year however, a cool framework from Sensible Cocoa (at $100) came to my knowledge and I bought it.

Sadly, the framework, created by Tarek Sakr, lacked documentation, at least at my level. I tried, but had to drop it.

I then had a round with Filemaker Pro, witch provide a nice way to prototype database application. I didn’t however, see any way to make sellable apps in the App Store, and in late spring, when my test-version expired, I dropped it also.

STV 3.0 – finally a decent version

Then Sensible Cocoa began promoting an upcoming new version with documentation, and I had something to wait for. When it arrived, I had to shell out another  $125 (I hate being billed for developer stuff!), but no documentation appeared. Finally in version 3.08 it appeared and I could start using it. Vacation approached however, and now I’m in it.

I thought I’d just follow the book, and write every code character. By the way, copying isn’t without danger either…

Copying code from PDF sometimes includes strange invisible characters that destroys the project. You get a lot of not-resolvable and not-visible errors. The solution is to first copy the text to a text-editor like Byword, then copy it again, and finally paste it to XCode.

Back to school

The two-first sections was well known to me, and I started again with Section 3, Setting up STV. Tarek explains well but asks us to name the view-controller RootViewController, which he later calls iPhoneViewController, before he settles down on iPhoneRootViewController for the main part of his book.

A silly detail, but for SQL server people like me, it drove me nut. In the learning phase, inconsistencies just slows us down. I hope Tarek correct these annoyances….

In Section 4 begins the fun — Exploring the possibilities. Tarek let us create a decent task app, and he starts us with a simple task object. He guides you through his structure:

  • Setting up the screen
  • Create the objects definition
  • Create property definitions
  • Create an instance of the objects
  • Create the section(s) for the task object
It’s fun and it’s a bit magical!

Tarek describes his ingenious STV30 architecture like this:

An SCTableViewModel defines a table view model with several sections, each section being of type

SCTableViewSection. Each SCTableViewSection can contain several cells, each cell being of type

SCTableViewCell. SCTableViewModel’s functionality can also be extended using

SCTableViewModelDataSource and SCTableViewModelDelegate.

Progression is smooth and well

Tarek leads you from the single Task object, to a list of objects, adding TaskStep object, and gradually opening for more advanced controls like switch and date-pickers.

I’m now finished with the objects and heading for the real stuff – Core Data. I’ll update the post when I’m further down in Tarek’s PDF…

Preliminary conclusion

For me STV is still a of bit black magic, and I’m not sure if I dare to release a commercial app on that. But for prototyping I’m all in. I agree with Tarek -

STV3.0 is exciting indeed!