<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Anders Färdigh &#187; objective-c</title>
	<atom:link href="http://www.andersfardigh.com/tag/objective-c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andersfardigh.com</link>
	<description>Creative / Technical Director Monterosa Singapore Loves Apps Innovation Internet Mobile Develops iOS Serverside Design UI User Experience And Usability</description>
	<lastBuildDate>Sun, 06 Nov 2011 13:52:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Semi-localization</title>
		<link>http://www.andersfardigh.com/semi-localization</link>
		<comments>http://www.andersfardigh.com/semi-localization#comments</comments>
		<pubDate>Sun, 06 Jun 2010 20:52:58 +0000</pubDate>
		<dc:creator>anders</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[strängar]]></category>
		<category><![CDATA[strings]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.andersfardigh.com/?p=298</guid>
		<description><![CDATA[För att byta mellan set av strängar kan du antingen göra en fullfjädrad localization. Ett alternativ att använda hantera strängar och språk manuellt i appen. Du kanske bara vill hantera olika sträng-set på ett överskådligt och uppdelat sätt.
Skapa en strings-fil:
Välj New File -&#62; Strings File och döp filen till något du känner igen. Om det [...]]]></description>
			<content:encoded><![CDATA[<p>För att byta mellan set av strängar kan du antingen göra en <a href="http://www.icanlocalize.com/site/tutorials/iphone-applications-localization-guide/">fullfjädrad localization</a>. Ett alternativ att använda hantera strängar och språk manuellt i appen. Du kanske bara vill hantera olika sträng-set på ett överskådligt och uppdelat sätt.</p>
<p><strong>Skapa en strings-fil:</strong></p>
<p>Välj New File -&gt; Strings File och döp filen till något du känner igen. Om det handlar om att separera språk så kan du exempelvis kalla den se.strings eller en.strings.</p>
<p>Sen fyller du på med nycklelvärden och strängar enligt:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008426;"><strong>/* se.strings */</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008426;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008426;">/* urlar */</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d92823;">&#8220;baseurl&#8221;<span style="color: #000000;"><span style="white-space: pre;"> </span>= </span>&#8220;http://www.någonurlfördethärspråket.com&#8221;<span style="color: #000000;">;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008426;">/* base menu */</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d92823;">&#8220;start&#8221;<span style="color: #000000;"><span style="white-space: pre;"> </span>= </span>&#8220;Hem&#8221;<span style="color: #000000;">;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d92823;">&#8220;settings&#8221;<span style="color: #000000;"><span style="white-space: pre;"> </span>= </span>&#8220;Inställningar&#8221;<span style="color: #000000;">;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d92823;">
<p>Notera semikolon i slutet av varje rad.</p>
<p><strong>Hämta ut strängar från strings-filer:</strong></p>
<p>Om du sedan vill hämta ut någon sträng &#8211; exempelvis &#8220;start&#8221;-strängen vilken ska översättas till &#8220;Hem&#8221; (i från ovan fil som heter se.strings) använder du bara:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #7b482f;">NSLocalizedStringFromTable<span style="color: #000000;">(</span><span style="color: #d92823;">@&#8221;start&#8221;</span><span style="color: #000000;">, </span><span style="color: #d92823;">@&#8221;se&#8221;</span><span style="color: #000000;">, </span><span style="color: #c22a9c;">nil</span><span style="color: #000000;">);</span></p>
<p>Det första värdet är alltså namnet på &#8220;nyckeln&#8221;, det andra vilken fil, eller tabell, du vill läsa ifrån.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andersfardigh.com/semi-localization/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push-notiser</title>
		<link>http://www.andersfardigh.com/push-notiser</link>
		<comments>http://www.andersfardigh.com/push-notiser#comments</comments>
		<pubDate>Mon, 17 May 2010 22:21:25 +0000</pubDate>
		<dc:creator>anders</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://www.andersfardigh.com/?p=289</guid>
		<description><![CDATA[Du kan skicka med vilka parametrar du vill i dina push-notiser.  Förutom badge-nummer, notisljud och notistext kan du skicka med extra-data som din app kan plocka upp i det NSDictionary-objekt som du tar emot via:
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
 NSLog(@&#8221;Got values: %@&#8221;, [userInfo allValues]);
}

Eller  när programmet startar, triggad av en push-notification: 


-(BOOL) application:(UIApplication *)application [...]]]></description>
			<content:encoded><![CDATA[<p>Du kan skicka med vilka parametrar du vill i dina push-notiser.  Förutom badge-nummer, notisljud och notistext kan du skicka med extra-data som din app kan plocka upp i det NSDictionary-objekt som du tar emot via:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">-(<span style="color: #c22a9c;">void</span>) application:(<span style="color: #753ea3;">UIApplication</span> *)application didReceiveRemoteNotification:(<span style="color: #753ea3;">NSDictionary</span> *)userInfo {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span><span style="color: #411f7c;">NSLog</span>(<span style="color: #d92823;">@&#8221;Got values: %@&#8221;</span>, [userInfo <span style="color: #411f7c;">allValues</span>]);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">Eller  när programmet startar, triggad av en push-notification: </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;">-(<span style="color: #c22a9c;">BOOL</span>) application:(<span style="color: #753ea3;">UIApplication</span> *)application didFinishLaunchingWithOptions:(<span style="color: #753ea3;">NSDictionary</span> *)launchOptions {<span style="white-space: pre;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #753ea3;"><span style="color: #000000;"> application.</span>applicationIconBadgeNumber<span style="color: #000000;"> = </span><span style="color: #2f2fcf;">0</span><span style="color: #000000;">;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #753ea3;"><span style="color: #000000;"><span style="color: #753ea3;"> NSDictionary<span style="color: #000000;"> *userInfo = [launchOptions </span><span style="color: #411f7c;">valueForKey</span><span style="color: #000000;">:</span>UIApplicationLaunchOptionsRemoteNotificationKey<span style="color: #000000;">];</span></span></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px;"><span style="color: #753ea3;"><span style="color: #000000;"><span style="color: #411f7c;"> NSLog</span>(<span style="color: #d92823;">@&#8221;Got values: %@&#8221;</span>, [userInfo <span style="color: #411f7c;">allValues</span>]);</span></span></p>
<div>}</div>
<p>Exempelvis så skapar jag min JSON-array på följande vis med php:</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$body['aps'] = array(&#8217;alert&#8217; =&gt; $message);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">if ($badge)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$body['aps']['badge'] = $badge;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">if ($sound)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$body['aps']['sound'] = $sound;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$body['band'] = array();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$body['band']['id'] = &#8220;9&#8243;;</div>
<p>$body['aps'] = array(&#8217;alert&#8217; =&gt; $message);</p>
<p>if ($badge)</p>
<p>$body['aps']['badge'] = $badge;</p>
<p>if ($sound)</p>
<p>$body['aps']['sound'] = $sound;</p>
<p>$body['extrainformation'] = array();</p>
<p>$body['extrainformation']['data1'] = &#8220;Extra sträng&#8221;;</p>
<div>json_encode($body);</div>
]]></content:encoded>
			<wfw:commentRss>http://www.andersfardigh.com/push-notiser/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Override på en Coredata-objekt setter</title>
		<link>http://www.andersfardigh.com/override-pa-en-coredata-objekt-setter</link>
		<comments>http://www.andersfardigh.com/override-pa-en-coredata-objekt-setter#comments</comments>
		<pubDate>Fri, 14 May 2010 09:31:33 +0000</pubDate>
		<dc:creator>anders</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[coredata]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.andersfardigh.com/?p=283</guid>
		<description><![CDATA[Om du skapat ett Coredata-objekt med en uppsättning attribut och automat-genererat en klass kan det hända att du vill ändra en set-funktion. I mitt fall ville jag exempelvis nyligen uppdatera &#8220;tid för senaste updatering&#8221; samtidigt som jag favorit-markerade ett objekt.
I och med att alla Coredata-attribut är @dynamic kan du inte sätta värden som om det [...]]]></description>
			<content:encoded><![CDATA[<p>Om du skapat ett Coredata-objekt med en uppsättning attribut och automat-genererat en klass kan det hända att du vill ändra en set-funktion. I mitt fall ville jag exempelvis nyligen uppdatera &#8220;tid för senaste updatering&#8221; samtidigt som jag favorit-markerade ett objekt.</p>
<p>I och med att alla Coredata-attribut är @dynamic kan du inte sätta värden som om det vore en vanlig @property utan du använder dig av <a href="http://developer.apple.com/mac/library/documentation/cocoa/conceptual/KeyValueCoding/Concepts/BasicPrinciples.html" target="_blank">Key Value Coding</a>:</p>
<p style="font: normal normal normal 11px/normal Menlo; margin: 0px;">-(<span style="color: #c22a9c;">void</span>) setFavourite:(<span style="color: #753ea3;">NSNumber</span> *) newFav {</p>
<p style="font: normal normal normal 11px/normal Menlo; min-height: 13px; margin: 0px;">
<p style="font: normal normal normal 11px/normal Menlo; color: #411f7c; margin: 0px;"><span style="color: #000000;"><span style="white-space: pre;"> </span>[</span><span style="color: #c22a9c;">self</span><span style="color: #000000;"> </span>willChangeValueForKey<span style="color: #000000;">:</span><span style="color: #d92823;">@"favourite"</span><span style="color: #000000;">];</span></p>
<p style="font: normal normal normal 11px/normal Menlo; color: #411f7c; margin: 0px;"><span style="color: #000000;"><span style="white-space: pre;"> </span>[</span><span style="color: #c22a9c;">self</span><span style="color: #000000;"> </span>setPrimitiveValue<span style="color: #000000;">:newFav </span>forKey<span style="color: #000000;">:</span><span style="color: #d92823;">@"favourite"</span><span style="color: #000000;">];</span></p>
<p style="font: normal normal normal 11px/normal Menlo; color: #411f7c; margin: 0px;"><span style="color: #000000;"><span style="white-space: pre;"> </span>[</span><span style="color: #c22a9c;">self</span><span style="color: #000000;"> </span>didChangeValueForKey<span style="color: #000000;">:</span><span style="color: #d92823;">@"favourite"</span><span style="color: #000000;">];</span></p>
<p style="font: normal normal normal 11px/normal Menlo; min-height: 13px; margin: 0px;">
<p style="font: normal normal normal 11px/normal Menlo; color: #411f7c; margin: 0px;"><span style="color: #000000;"><span style="white-space: pre;"> </span>[</span><span style="color: #c22a9c;">self</span><span style="color: #000000;"> </span>timestamp<span style="color: #000000;">];</span></p>
<p style="font: normal normal normal 11px/normal Menlo; min-height: 13px; margin: 0px;"><span style="white-space: pre;"> </span></p>
<p style="font: normal normal normal 11px/normal Menlo; margin: 0px;">}</p>
<p>Det viktiga här är, för det första, att du använder <strong>willChangeValueForKey</strong> och <strong>didChangeValueForKey</strong>. Sen kan du använda <strong>setValue: forKey:</strong> vilket jag fått att fungera för NSString-attribut, men inte för NSNumber &#8211; så använd <strong>setPrimitiveValue: forKey:</strong> istället. Vad jag förstått är det generellt att föredra.</p>
<p>Då vi ändå är inne på key values så tänkte jag tipsa om key-paths. Letade rätt på en <a href="http://probablyinteractive.com/2009/2/13/keypaths.html" target="_blank">bloggpost som visar lite saker du kan använda det till</a> &#8211; exempelvis smidigt söka igenom en NSArray eller NSDictionary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andersfardigh.com/override-pa-en-coredata-objekt-setter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone och JSON decoding tips</title>
		<link>http://www.andersfardigh.com/iphone-och-json-encoding-tips</link>
		<comments>http://www.andersfardigh.com/iphone-och-json-encoding-tips#comments</comments>
		<pubDate>Thu, 13 May 2010 23:02:49 +0000</pubDate>
		<dc:creator>anders</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.andersfardigh.com/?p=279</guid>
		<description><![CDATA[Hade en app som fungerade perfekt med  SBJSON-encoder/decoder (som jag har sett och hört fler använda med goda resultat). Det har varit så för mig väldigt länge&#8230;
MEN&#8230; Helt plötsligt fick jag felmeddelanden utan att ha ändrat någon närliggande kod. Det klagades på att key-values inte var rätt separerade osv.
Det verkar som att den decodern inte [...]]]></description>
			<content:encoded><![CDATA[<p>Hade en app som fungerade perfekt med  <a href="http://code.google.com/p/json-framework/">SBJSON-encoder/decoder</a> (som jag har sett och hört fler använda med goda resultat). Det har varit så för mig väldigt länge&#8230;</p>
<p>MEN&#8230; Helt plötsligt fick jag felmeddelanden utan att ha ändrat någon närliggande kod. Det klagades på att key-values inte var rätt separerade osv.</p>
<p>Det verkar som att den decodern inte klarar av för långa strängar och när json-flödet växte så gav den upp. Jag hittade istället <a href="http://code.google.com/p/touchcode/wiki/TouchJSONHowTo">TouchJSON</a> vilken fungerade perfekt. Decodar på följande vis:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span><span style="color: #753ea3;">NSString</span> *jsonString =[[<span style="color: #753ea3;">NSString</span> <span style="color: #411f7c;">alloc</span>] <span style="color: #411f7c;">initWithString</span>:<span style="color: #488186;">collectedDataString</span>];</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #411f7c;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #753ea3;">NSData</span><span style="color: #000000;"> *jsonData = [jsonString </span>dataUsingEncoding<span style="color: #000000;">:</span>NSUTF32BigEndianStringEncoding<span style="color: #000000;">];</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo;"><span style="white-space: pre;"> </span><span style="color: #753ea3;">NSError</span> *error = <span style="color: #c22a9c;">nil</span>;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #2c595d;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #753ea3;">NSDictionary</span><span style="color: #000000;"> *res = [[</span><span style="color: #488186;">CJSONDeserializer</span><span style="color: #000000;"> </span>deserializer<span style="color: #000000;">] </span>deserializeAsDictionary<span style="color: #000000;">:jsonData </span>error<span style="color: #000000;">:&amp;error];</span></p>
<p><a href="http://code.google.com/p/touchcode/wiki/TouchJSONHowTo">Touch JSON finns att ladda ner här.</a></p>
<p>Efter ytterligare läsning hittade jag även <a href="http://github.com/gabriel/yajl-objc" target="_blank">YAJL</a> som i olika tester verkar vara <a href="http://psionides.jogger.pl/2010/03/04/cocoa-json-parsing-libraries" target="_blank">snabbast av de tre</a>.</p>
<p>**</p>
<p>Numera använder jag bara YAJL då den gett bäst prestanda och har aldrig haft några problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andersfardigh.com/iphone-och-json-encoding-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

