<?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>AppWorks By Rade &#124; Eccles</title>
	<atom:link href="http://appworks.radeeccles.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://appworks.radeeccles.com</link>
	<description>iOS Development Blog: Programming, Graphics Design, Tips, Tricks, &#38; Tutorials</description>
	<lastBuildDate>Fri, 02 Dec 2011 17:59:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Convert SQL Statement to an NSPredicate For Use With Core Data</title>
		<link>http://appworks.radeeccles.com/programming/convert-sql-nspredicate-core-data/</link>
		<comments>http://appworks.radeeccles.com/programming/convert-sql-nspredicate-core-data/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 15:28:09 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[iPhone OS Programming]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://appworks.radeeccles.com/?p=231</guid>
		<description><![CDATA[OBJECTIVE Translate a SQL statement with multiple conditions into an NSPredicate for use with Core Data BACKGROUND The Rade &#124; Eccles team is hard at work to release another fantastic financial utility app very soon that EVERYONE who spends money can use.  This app is using Core Data to manage the data store.  As a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>OBJECTIVE</strong></p>
<p>Translate a SQL statement with multiple conditions into an NSPredicate for use with Core Data</p>
<p><strong>BACKGROUND</strong></p>
<p>The Rade | Eccles team is hard at work to release another fantastic financial utility app very soon that EVERYONE who spends money can use.  This app is using Core Data to manage the data store.  As a developer I have been using SQL for roughly 20 years.  SQL and databases are second nature to me.  Core Data has a fantastic ability to abstract out the complexities of dealing with a specific database product or even the use of raw SQL statements which is great for those who don&#8217;t have much database experience.</p>
<p>But I found myself, as many others who have used Core Data, needing to set aside my database and SQL knowledge and learn how to perform what would be a simple SQL statement using a Core Data NSPredicate. In other words, an old dog needed to learn a new trick.</p>
<p>After reviewing the documentation provided by Apple, looking at some sample programs, and searching StackOverflow.com I still couldn&#8217;t quite find what I was looking for.  Ultimately I ended up doing what any developer does when a problem presents itself which needs to be resolved&#8230; I dove in and used the trial and error method until I figured out what I needed.</p>
<p>I needed to build a Core Data predicate with multiple conditions.  If I were using SQL I would have written something like the following (pseudo-SQL):</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM TRANSACTIONS
WHERE CATEGORY IN (categoryList)
AND LOCATION IN (locationList)
AND TYPE IN (typeList)
AND NOTE contains[cd] &quot;some text&quot;
AND DATE &gt;= fromDate
AND DATE &lt;= toDate
</pre>
<p><strong>IMPLEMENTATION</strong></p>
<p>The first concept to understand was that I needed to build each condition as its own NSPredicate then use NSCompoundPredicate and pass it an array of all the individual predicates for each condition.  Since all of my conditions are AND conditions I can use<br />
the following statement to build a single NSPredicate from multiple predicates:</p>
<pre class="brush: objc; title: ; notranslate">
predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
</pre>
<p>It was obvious how I needed to create the date range condition and &#8220;Note&#8221; text field condition.  What took a bit more research was using the IN clause to specify a list of values to be substituted.  I found the Apple documentation a bit misleading in this area. In the end it turned out to be quite simple.  I could use the IN clause in the following manner:</p>
<pre class="brush: objc; title: ; notranslate">
predicate = [NSPredicate predicateWithFormat:@&quot;Category.Name IN %@&quot;, reportCategories];
</pre>
<p>In this case reportCategories is simply an array of string values.</p>
<p><strong>SOLUTION</strong></p>
<p>When I put all this together I ended up with a method like this:</p>
<pre>NOTE: In this example Category, Location, and Type are Core Data entities
with an attribute called Name.  The resulting predicate is used against a
Core Data entity called Transactions which contains:
NSDate's for both the "fromDate" and "toDate" attributes
Relationships to the Category, Location, and Type entities
An NSString for the "note" attribute.</pre>
<pre class="brush: objc; title: ; notranslate">
- (NSPredicate *)buildCustomReportPredicate {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder

 NSMutableArray *predicates = [[NSMutableArray alloc] initWithCapacity:5];

 // date predicate
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@&quot;(Date &gt;= %@) AND (Date &lt;= %@)&quot;, self.periodFromDate, self.periodToDate];
 [predicates addObject:predicate];

 // categories predicate
 NSMutableArray *reportCategories = [NSMutableArray arrayWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@&quot;ReportCategories&quot;]];
 if ([reportCategories count] &gt; 0) {
 predicate = [NSPredicate predicateWithFormat:@&quot;Category.Name IN %@&quot;, reportCategories];
 [predicates addObject:predicate];
 }

 // locations predicate
 NSMutableArray *reportLocations = [NSMutableArray arrayWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@&quot;ReportLocations&quot;]];
 if ([reportLocations count] &gt; 0) {
 predicate = [NSPredicate predicateWithFormat:@&quot;Location.Name IN %@&quot;, reportLocations];
 [predicates addObject:predicate];
 }

 // types predicate
 NSMutableArray *reportTypes = [NSMutableArray arrayWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@&quot;ReportTypes&quot;]];
 if ([reportTypes count] &gt; 0) {
 predicate = [NSPredicate predicateWithFormat:@&quot;Type.Name IN %@&quot;, reportTypes];
 [predicates addObject:predicate];
 }

 // note predicate
 NSString *note = [[NSUserDefaults standardUserDefaults] objectForKey:@&quot;ReportNote&quot;];
 if (![note isEqualToString:@&quot;&quot;]) {
 predicate = [NSPredicate predicateWithFormat:@&quot;Note contains[cd] %@&quot;, note];
 [predicates addObject:predicate];
 }

 // build the compound predicate
 predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];

 [predicates release];
 return predicate;

}
</pre>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/intent/tweet?text=Convert+SQL+Statement+to+an+NSPredicate+For+Use+With+Core+Data+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D231" title="Post to Twitter"><img class="nothumb" src="http://appworks.radeeccles.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/intent/tweet?text=Convert+SQL+Statement+to+an+NSPredicate+For+Use+With+Core+Data+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D231" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://appworks.radeeccles.com/programming/convert-sql-nspredicate-core-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moving objects in an NSMutableArray</title>
		<link>http://appworks.radeeccles.com/programming/moving-objects-nsmutablearray/</link>
		<comments>http://appworks.radeeccles.com/programming/moving-objects-nsmutablearray/#comments</comments>
		<pubDate>Sat, 01 May 2010 08:04:52 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[iPhone OS Programming]]></category>
		<category><![CDATA[Categories]]></category>
		<category><![CDATA[NSMutableArray]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://appworks.radeeccles.com/?p=57</guid>
		<description><![CDATA[A glaring omission from the NSMutableArray class is the ability to move an object from one index to another.  There are methods for adding and deleting objects but not for simply moving.  One great approach is to use a category on NSMutableArray.  When we were looking to optimize our code we found a very well [...]]]></description>
			<content:encoded><![CDATA[<p>A glaring omission from the NSMutableArray class is the ability to move an object from one index to another.  There are methods for adding and deleting objects but not for simply moving.  One great approach is to use a category on NSMutableArray.  When we were looking to optimize our code we found a very well documented blog post on this topic so we&#8217;ll just point you to our original source.  It&#8217;s quite useful and very simple to implement.</p>
<p><a title="Move Array Category" href="http://www.icab.de/blog/2009/11/15/moving-objects-within-an-nsmutablearray/" target="_blank">http://www.icab.de/blog/2009/11/15/moving-objects-within-an-nsmutablearray/</a></p>
<p style="text-align: center;">
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/intent/tweet?text=Moving+objects+in+an+NSMutableArray+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D57" title="Post to Twitter"><img class="nothumb" src="http://appworks.radeeccles.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/intent/tweet?text=Moving+objects+in+an+NSMutableArray+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D57" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://appworks.radeeccles.com/programming/moving-objects-nsmutablearray/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using the Disqus API with Objective C</title>
		<link>http://appworks.radeeccles.com/programming/disqus-api-objective-c/</link>
		<comments>http://appworks.radeeccles.com/programming/disqus-api-objective-c/#comments</comments>
		<pubDate>Sat, 01 May 2010 04:25:29 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[iPhone OS Programming]]></category>
		<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://appworks.radeeccles.com/?p=22</guid>
		<description><![CDATA[OBJECTIVE Provide an Objective C example of implementing the Disqus API. BACKGROUND Recently Rade &#124; Eccles developed a blog reader app for a website which uses Disqus as a commenting platform. We had a requirement to allow users to post comments from the app directly to the website&#8217;s Disqus sytem. What is Disqus? (http://www.disqus.com) &#8220;Disqus (dis·cuss [...]]]></description>
			<content:encoded><![CDATA[<p><strong>OBJECTIVE</strong></p>
<p>Provide an Objective C example of implementing the Disqus API.</p>
<p><strong>BACKGROUND</strong></p>
<p>Recently Rade | Eccles developed a blog reader app for a website which  uses Disqus as a commenting platform. We had a requirement to allow  users to post comments from the app directly to the website&#8217;s Disqus  sytem.</p>
<p>What is Disqus? (<a title="disqus.com" href="http://www.disqus.com" target="_blank">http://www.disqus.com</a>)</p>
<p>&#8220;Disqus <em>(dis·cuss • dĭ-skŭs&#8217;)</em> is all about changing the  way people think about discussion on the web. We&#8217;re big believers in  the conversations and communities that form on blogs and other sites. Disqus  Comments is for bloggers and publishers who wish to use Disqus on their  sites, while Disqus Profile is for the rest of us who are commenting on  sites powered by Disqus.&#8221;</p>
<p>Disqus provides some online API documentation; however, it is language agnostic.  The Disqus API documentation can be found here: <a title="Disqus API Documentation" href="http://wiki.disqus.net/API" target="_blank">http://wiki.disqus.net/API</a></p>
<p><strong>DISQUS API INTRO</strong></p>
<p>There are three types of Disqus objects that this API provides access  to: forums, threads, and posts.                   A <em>post</em> is any  comment written by a Disqus user.                     Each post belongs  to a <em>thread</em>, which represents a particular topic of  conversation.                         Each thread belongs to a <em>forum</em>.                      A forum represents a website that is using Disqus.                       For example, your blog might constitute a single  forum, and each blog post would have its own thread.</p>
<p>The API is executed over HTTP using the http://disqus.com/api/(method_name)/ endpoint.  Some methods are a GET request and some are a POST.  All responses are returned using JSON.</p>
<p><strong>IMPLEMENTATION</strong></p>
<p>To speed up the development process we will leverage two publicly available frameworks used by many other developers.  You will need to download both frameworks and integrate them into your project before proceeding.</p>
<ol>
<li>ASIHTTPRequest &#8211; An excellent, easy to use wrapper around the CFNetwork API that  makes some of the more tedious aspects of communicating with web servers  easier. It is written in Objective-C and works in both Mac OS X and  iPhone applications. You can download the code and view the documentation here: <a title="ASIHTTPRequest Code &amp; Documentation" href="http://allseeing-i.com/ASIHTTPRequest/" target="_blank">http://allseeing-i.com/ASIHTTPRequest/</a></li>
<li>JSON Framework &#8211; This framework implements a strict <a rel="nofollow" href="http://json.org/">JSON</a> parser and generator in Objective-C. You can download the code and view the documentation here: <a title="JSON Code &amp; Documentation" href="http://code.google.com/p/json-framework/" target="_blank">http://code.google.com/p/json-framework/</a></li>
</ol>
<p>To post a comment to Disqus we need to use the &#8220;create_post&#8221; API at the http://disqus.com/api/create_post/ endpoint.  This method is an HTTP POST and requires the following parameters:</p>
<ul>
<li>Thread ID</li>
<li>Message</li>
<li>Author Name</li>
<li>Author Email</li>
</ul>
<p>The message, author name, and author email will come from our app but we need to ask Disqus what the correct thread ID is before we can successfully post a comment.</p>
<p>Our process flow is as follows:</p>
<ol>
<li>User enters a comment, provides a user name and email address, and presses a &#8220;Submit&#8221; button</li>
<li>Request the thread ID from Disqus based on the URL of the thread using the &#8220;get_thread_by_url&#8221; method (GET)</li>
<li>Parse the JSON response to access the thread ID</li>
<li>POST the comment using the &#8220;create_post&#8221; method</li>
</ol>
<p><strong>STEP 1</strong></p>
<p>For step one we will assume an AddCommentViewController.m exists in our project and the following three headers have been imported:</p>
<pre class="brush: objc; title: ; notranslate">

#import &amp;quot;ASIFormDataRequest.h&amp;quot;
#import &amp;quot;ASIHTTPRequest.h&amp;quot;
#import &amp;quot;SBJSON.h&amp;quot;
</pre>
<p>There should also be some instance variables for a user name, email address, the comment text itself, and a submit button.</p>
<p><strong>STEP 2</strong></p>
<p>After the user presses the submit button we want to construct our call to &#8220;get_thread_by_url&#8221;. This method requires two parameters: the forum key and the URL of the thread in which to post a comment. A forum key can be shared among trusted  moderators of a forum, and is used to perform actions associated with  that forum. The creator of a forum (an administrator or website owner) can get the forum&#8217;s key through the  API (see below). The API documentation provides instructions on how the administrator can obtain the forum key if necessary.</p>
<pre class="brush: objc; title: ; notranslate">
- (IBAction)submit {
    NSString *DisqusForumKey = [[NSUserDefaults standardUserDefaults] objectForKey:self.feed.forumKey];

    NSString *urlString = [[[NSString alloc] initWithString:@&amp;quot;http://disqus.com/api/get_thread_by_url/&amp;quot;] autorelease];
    urlString = [urlString stringByAppendingFormat:@&amp;quot;?api_version=1.1&amp;amp;url=%@&amp;amp;forum_api_key=%@&amp;quot;, blogPostURL, DisqusForumKey];
    NSURL *url = [[NSURL alloc] initWithString:urlString];

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(requestDidFinishForThreadID:)];
    [request startAsynchronous];
}
</pre>
<p>Let&#8217;s take a closer look at the code above. In line two we are setting a variable which contains the forum key for the current thread.  You may or not be able to simply hard code the forum key into your code.  In our case we were dealing with multiple distinct and separate forums (databases) each with their own set of threads.</p>
<p>In line four we construct a string with our method endpoint.</p>
<p>In line five we add to that string an optional api version parameter, the URL of the thread, and the forum key.</p>
<p>In line six we construct an NSURL object from our new URL string.</p>
<p>In line eight we construct an ASIHTTPRequest object using our NSURL object.</p>
<p>In line nine we set the delegate to self so we can handle the callback when a response is received.</p>
<p>In line 10 we need to specify a custom callback method because we will be handling two different types of JSON responses in our view controller since we are making two different API calls.  If we didn&#8217;t specify a custom didFinishSelector the default callback method would be  <code>- (void)requestFinished:(<a href="http://github.com/pokeb/asi-http-request/tree/master/Classes/ASIHTTPRequest.h">ASIHTTPRequest</a> *)request. </code>Here we will set requestDidFinishForThreadID as our desired callback.</p>
<p>Finally in line eleven we kick off the asynchronous HTTP request.</p>
<p><strong>STEP 3</strong></p>
<p>Now we need to parse the thread ID out of the JSON response in our custom callback method. All responses are  JSON objects with three fields:</p>
<ul>
<li><strong>succeeded</strong>: Indicates whether the call  completed successfully or encountered an error.</li>
<li><strong>code</strong>:  &#8220;ok&#8221; if succeeded, otherwise an short description of the error that  occurred.</li>
<li><strong>message</strong>: The body of the response,  which will depend on the method being used. In case of error, contains a  longer description of the error that occurred.</li>
</ul>
<pre class="brush: objc; title: ; notranslate">

- (void)requestDidFinishForThreadID:(ASIHTTPRequest *)request {
     NSString *responseString = [request responseString];
     SBJSON *jsonParser = [SBJSON new];
     NSDictionary *dict = (NSDictionary*)[jsonParser objectWithString:responseString];
     [jsonParser release];

     // get thread id
     NSDictionary *messageDictionary = (NSDictionary *)[dict objectForKey:@&amp;quot;message&amp;quot;];
     NSString *threadID = (NSString *)[messageDictionary objectForKey:@&amp;quot;id&amp;quot;];

}
</pre>
<p>In line two we extract the response string from the HTTP request.</p>
<p>In line three we create a JSON Parser.</p>
<p>In line four we use the JSON parser to return a dictionary of parameters.</p>
<p>In line eight we get a dictionary from the &#8220;message&#8221; field of the JSON response.  The call to the &#8220;get_thread_by_url&#8221; method returns a thread object in the message field.  This object has several parameters which are documented in the Disqus API; however, we are only interested in the ID parameter.</p>
<p>In line ten we retrieve the actual thread ID for the specified URL from the message dictionary.</p>
<p><strong>STEP 4</strong></p>
<p>After we have parsed the thread ID we are ready to construct the call to the &#8220;create_post&#8221; method to submit the comment to the Disqus database.  Add the code below to the requestDidFinishForThreadID method so it looks like this:</p>
<pre class="brush: objc; title: ; notranslate">

- (void)requestDidFinishForThreadID:(ASIHTTPRequest *)request {
 // Use when fetching text data
 NSString *responseString = [request responseString];

 SBJSON *jsonParser = [SBJSON new];
 NSDictionary *dict = (NSDictionary*)[jsonParser objectWithString:responseString];
 [jsonParser release];

 // get thread by url results
 NSDictionary *messageDictionary = (NSDictionary *)[dict objectForKey:@&amp;quot;message&amp;quot;];
 NSString *threadID = (NSString *)[messageDictionary objectForKey:@&amp;quot;id&amp;quot;];

 // assemble the POST data
 NSString *DisqusForumKey = [[NSUserDefaults standardUserDefaults] objectForKey:self.feed.forumKey];

 NSURL *url = [[NSURL alloc] initWithString:@&amp;quot;http://disqus.com/api/create_post/&amp;quot;];
 ASIFormDataRequest *requestPostComment = [ASIFormDataRequest requestWithURL:url];
 [requestPostComment setPostValue:@&amp;quot;1.1&amp;quot; forKey:@&amp;quot;api_version&amp;quot;];
 [requestPostComment setPostValue:threadID forKey:@&amp;quot;thread_id&amp;quot;];
 [requestPostComment setPostValue:userName.text forKey:@&amp;quot;author_name&amp;quot;];
 [requestPostComment setPostValue:userEmail.text forKey:@&amp;quot;author_email&amp;quot;];
 [requestPostComment setPostValue:userComment.text forKey:@&amp;quot;message&amp;quot;];
 [requestPostComment setPostValue:DisqusForumKey forKey:@&amp;quot;forum_api_key&amp;quot;];
 [requestPostComment setDelegate:self];
 [requestPostComment startAsynchronous];

}
</pre>
<p>Lines 14 and 16 should be familiar as we are getting the forum key and constructing the POST for the &#8220;create_post&#8221; method.</p>
<p>In line 17, this time we will use ASIFormDataRequest which is used to make an HTTP POST.</p>
<p>In lines 18-23 we set the required parameters for this method call.</p>
<p>Next, we set the delegate to self to receive the response in the callback method.  In this case, since we didn&#8217;t specify a didFinishSelector the default requestFinished method will be called.  Here we could check for errors/failures an issue an appropriate message to the user if necessary.</p>
<p>Finally we kick off the asynchronous HTTP POST.</p>
<p><strong>SOLUTION</strong></p>
<p>At this point as long as the forum keys and the thread URL is correct you should have posted a comment successfully in Disqus.</p>
<p><strong>LINK SUMMARY</strong></p>
<p>Disqus &#8211; <a title="disqus.com" href="http://www.disqus.com/" target="_blank">http://www.disqus.com</a></p>
<p>Disqus API &#8211; <a title="Disqus API Documentation" href="http://wiki.disqus.net/API" target="_blank">http://wiki.disqus.net/API</a></p>
<p>ASIHTTPRequest &#8211; <a title="ASIHTTPRequest Code &amp; Documentation" href="http://allseeing-i.com/ASIHTTPRequest/" target="_blank">http://allseeing-i.com/ASIHTTPRequest/</a></p>
<p>JSON Framework &#8211; <a title="JSON Code &amp; Documentation" href="http://code.google.com/p/json-framework/" target="_blank">http://code.google.com/p/json-framework/</a></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p><strong> </strong></p>
<p><strong> </strong></p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/intent/tweet?text=Using+the+Disqus+API+with+Objective+C+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D22" title="Post to Twitter"><img class="nothumb" src="http://appworks.radeeccles.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/intent/tweet?text=Using+the+Disqus+API+with+Objective+C+http%3A%2F%2Fappworks.radeeccles.com%2F%3Fp%3D22" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://appworks.radeeccles.com/programming/disqus-api-objective-c/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss>

