objective c [ios] : หาความสูงรวมของ content ใน scroll view

เพราะใช้วิธีวนลูป subview ของ scrollview เพื่อหาความสูงรวม 
ดันไปเจอไอสอง subview ลับของมัน

โชคดีที่ subview ของ scroll view ไม่มี uiimage
เลยใช้ [view isKindOfClass:[UIImageView class]]  เช็คเอา[view isKindOfClass:[UIImageView class]]




Cache ใช้งานง่ายสำหรับ objective c (ios)

กำลังหัดเขียน ios app

ไปเจอส่วนที่จะใช้ cache เลยเอามาแปะไว้ใน blog


มีฟังก์ชั่นหลักๆอยู่แค่ 3-4 อัน

setObject สำหรับเก็บ NSData ลง cache โดยผูกไว้กับ key
objectForKey ก็ดึง object มาจาก cache โดยใช้ key


สมมติเรามี url ของ image ที่เราจะแสดงอยู่แล้ว เราอาจใช้ MD5Hash ของ url นั้นเป็น key

NSString *key = [imageURL.absoluteString MD5Hash];
NSData *data = [FTWCache objectForKey:key]; //ลองเอา key ไปหาก่อน
if (data) { //ถ้ามีก็ใช้รูปจาก cache
UIImage *image = [UIImage imageWithData:data];
cell.imageView.image = image;
} else { //ถ้าไม่มีก็ไปดึงจาก web

NSData *data = [NSData dataWithContentsOfURL:imageURL]; //ไปดึง data มาจาก webservice
[FTWCache setObject:data forKey:key]; //เก็บลง cache
UIImage *image = [UIImage imageWithData:data];
[tableView cellForRowAtIndexPath:indexPath].imageView.image = image;

โค้ดตัวอย่างข้างบนเอามาจาก http://khanlou.com/2012/08/asynchronous-downloaded-images-with-caching/

objective c เรียก REST webservice

เอามาจาก http://rajneesh071.blogspot.com/2013/07/how-to-make-rest-api-call-in-objective-c.html

We can call using this.

NSString *twitterUrl = @”YourUrlString”;
NSString *resp = [self makeRestAPICall: twitterUrl];

and method is

-(NSString*) makeRestAPICall : (NSString*) reqURLStr
NSURLRequest *Request = [NSURLRequest requestWithURL:[NSURL URLWithString: reqURLStr]];
NSURLResponse *resp = nil;
NSError *error = nil;
NSData *response = [NSURLConnection sendSynchronousRequest: Request returningResponse: &resp error: &error];
NSString *responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
return responseString;

วิธีใช้ NSUserDefaults

สำหรับคนที่กำลังหัดเขียนแอพ ios

มันมีวิธีเก็บข้อมูลในเครื่องอยู่ 4 วิธี คือ

  1. NSUserDefaults  ง่ายสุด เหมาะกับเก็บอะไรเล็กๆ สำหรับแอพที่ไม่ซับซ้อนมาก รู้สึกแรกว่าเริ่มเดิมทีมันเอาไว้เก็บ user setting  ไปๆมาๆใช้เก็บไปเรื่อย =_=
  2. property files (plist / XML)
  3. SQLLite  มันคือ relational database นั่นละ
  4. Core Data  framework ของ apple  ไม่รู้ ยังไม่ได้ดู

วันนี้จะมาโน้ตเรื่อง NSUserDefaults เฉยๆ เพราะกำลังลองใช้อยู่


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@”myfistname” forKey:@”firstName”];
[defaults synchronize];


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@”firstName”];


object ที่เก็บใน NSUserDefaults จะถูกแปลงให้เป็นพวก  immutable เพราะงั้นเวลาเก็บพวก NSMutableArray แล้วจะดึงค่าออกมาใช้ ต้องทำประมาณนี้

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *followingList = [[NSMutableArray alloc] initWithArray:[defaults objectForKey:@”followingList”]];

Overwriting wordpress get_the_excerpt to keep html tag

For anyone who’s trying to customize your wordpress theme and wonder how to get a chunk of your post contents, maybe first xx characters of your post, and display them on your homepage. WordPress comes with a function  called get_the_excerpt which will do exactly what you want BUT it will remove all your html tag.

For example, here’s how my post content looks like.

Screen Shot 2557-02-16 at 1.38.58 PM

You’ll see that there are new lines <br/> and paragraph <p> in my content. However, when I use get_the_excerpt in my homepage. It turns out like this.

Screen Shot 2557-02-16 at 1.38.44 PM

As you can see, all new lines and paragraph are removed and my content are displayed in simple text format.

So, how to prevent this? Here’s how.

Open you functions.php in your theme folder and add this function

Screen Shot 2557-02-16 at 1.46.27 PM

This is to create a new function for excerpting. The magic line is strip_tag. I put only <p> here but you can put whatever tag you want. For example, you can use strip_tag($text,'<p><img>’) to get your img as well.

But just adding this function won’t work because get_the_exceprt() is still wiring to the old function. So you’ll need to add two extra lines to your theme functions.php

Screen Shot 2557-02-16 at 1.48.09 PM

This is to tell wordpress that when you call get_the_exceprt. You are going to call your own improved_trim_exceprt, not the wp_ one.

This is how it looks like after fixing. You can see that new lines and paragraph are now interpreted correctly.

Screen Shot 2557-02-16 at 1.56.27 PM

One thing worth noting is that this will affect every get_the_excerpt in your code, and usually, there are more than one place. For example facebook sharing (og:description) might also use get exceprt as description when sharing to facebook and you may want to remove html tag before doing so (because it looks like crap with html tag). To work around this, you might want to create more than one custom excerpt function.

Below are example of my custom functions.

Screen Shot 2557-02-16 at 1.54.37 PM

btw. I’m starting my new site which is an example in this post. Feel free to visit.