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

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

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

https://github.com/FTW/FTWCache

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

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

 

ตัวอย่าง
สมมติเรามี 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/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s