otrdiena, 2012. gada 6. marts

XCode un Core Data

Jau otro dienu savu laiku veltu Core Data apgūšanai. Internets ir pilns ar dažādiem tutoriāļiem, tomēr ne katrs no tiem pasaka dažas svarīgās lietas, ko ievērot izstrādes laikā. Dažas no tām ir:
1) Pirms taisi savu iOS app - ļoti labi pārdomā Core Data struktūru - ja publicētam un reāli lietotam apam nāksies šo struktūru mainīt, rēķinies, ka nepietiks ar atsevišķu entītiju pievienošanu, bet nāksies taisīt arī datu migrāciju no vecā modeļa uz jauno. Īsāk sakot - neaizmirsti, ka Core Data nav SQL datubāze.
2) Ja tiek veiktas izmaiņas Core Data struktūrā, tad arī no iOS simulatora nepieciešams izdzēst iepriekšējo aplikācijas versiju. Pretējā gadījumā programma nestartēsies, norādot dažadas kļūdas, kaut arī vienkārša aplikācijas izdzēšana un atkārtota uzstādīšana problēmu atrisinātu.
3) Kodējot Objective-C kārtīgi ievēro dažādu objektu nosaukumu lielos un mazos burtus. Klases vēlamais nosaukums ir jāraksta ar 1. lielo burtu, pārējiem mazajiem; tāpat arī ir Core Data entītijām. Dažādi "sasaisti atvieglojoši" rīki kā, piemēram, RestKit var neļaut veidot nepieciešamās saites, ja nosaukumu lielie/mazie burti attiecīgajam interfeisam atšķirsies no Core Data entītijas nosaukuma.

Visbeidzot - ja vēl kāds nolēmis cīnīties ar Core Data, tad iesākumam iesaku šo tutoriāli:
http://notatkiprogramisty.blox.pl/2011/10/iOS-Core-Data-and-Xcode-42-Snow-Leopard-English.html

Ļoti skaidri un ērti norādīts, kā CoreData ir lietojams.

piektdiena, 2012. gada 2. marts

XCode nerāda LV burti dictionary izdrukā

Kā dažiem jau ir zināms, jau kopš februāra vidus nodarbojos ar XCode un iOS apgūšanu. Tā, protams, nav viegla nodarbe, tomēr - pats galvenais - virzās uz priekšu. Šajā sakarā esmu nolēmis apkopot vairākas atziņas, kas man būs radušās izstrādes laikā.

Pirmā no šādām atziņām jeb "Grābeklis-1" - grābeklis, uz kura nenovēlu nevienam uzkāpt:

Situācija sekojoša - ir MySQL serveris, no kura ar JSON tiek lasīti dati. Saņemtie dati tiek konvertēti uz NSDictionary. Problēma radās, ja dati saturēja kādu latviešu valodas burtu - tādā gadījumā tas tika nokonvertēts uz UTF-8 sešu simbolu kodējumu, kas pats par sevi nebūtu problēma. Tomēr problēma radās, kad uzskatīju, ka XCode nemāk šo kodējumu atkodēt. Pēc vairāk kā dienas cīnīšanās sapratu, ka patiesā problēma ir pavisam citur, nevis UTF-8 kodējumā - ja XCode konsoles debugošanas logā liek izvadīt NSString vērtību, kura satur LV simbolus, tad izvads ir korekts. Tomēr ja tos pašus LV simbolus satur NSDictionary, tad izvadot vārdnīcas vērtības konsolē LV burti tiek pazaudēti, attēlojot tikai to UTF-8 kodējumus.
Secinājums - rēķinieties, ka XCode debugger logs, izvadot string vērtības, LV simbolus var attēlot gan normāli (NSString gadījumā), gan tikai to UTF-8 kodējumu (NSDictionary gadījumā).