1. 程式人生 > >NSData資料型別的講解

NSData資料型別的講解

NSData,資料,當我們需要把一些資訊寫入到檔案裡或傳送到網路上,我們需要把這些資料轉換下,變成純粹的0、1字元流
也就是網路中要傳資料的的時候,我們通常會用相應的NSData的資料來進行儲存。

1、 NSData 與 NSString:  //轉成UTF8的資料
NSString * str = @"hello, world!";
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
//NSString轉換成NSData型別
NSString * neswStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//將Data資料轉化為字串

2. NSData 與 UIImage
NSData->UIImage
UIImage *aimage = [UIImage imageWithData: imageData];
 
//例:從本地檔案沙盒中取圖片並轉換為NSData

NSData *imageData = [NSData dataWithContentsOfFile: finalPath];
// finalPath為獲取圖片的路徑,獲取圖片的資料
UIImage *aimage = [UIImage imageWithData: imageData];
//將圖片的資料轉化為圖片

3.NSData與NSArray  NSDictionary
+(NSString *)getLocalFilePath:(NSString *) fileName
{
 return [NSString stringWithFormat:@"%@/%@%@", NSHomeDirectory(),@“Documents”,fileName];
}
包括將NSData寫進Documents目錄,從Documents目錄讀取資料
在進行網路資料通訊的時候,經常會遇到NSData型別的資料。
在該資料是dictionary結構的情況下,系統沒有提供現成的轉換成NSDictionary的方法,為此可以通過Category對NSDictionary進行擴充套件,以支援從NSData到NSDictionary的轉換。

下面是在NSdictionary中新增轉化為NSData的方法。
+ (NSDictionary *)dictionaryWithContentsOfData:(NSData *)data {  

    CFPropertyListRef list = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)data, kCFPropertyListImmutable, NULL);
    if(list == nil) return nil;
    if ([(id)list isKindOfClass:[NSDictionary class]]) {
         return [(NSDictionary *)list autorelease];
        }
    else {
         CFRelease(list);
         return nil;
        }
}

NSData生成:
NSDictionary *dic =[NSDictionary dictionaryWithObject:@"hello" forKey:@"KEY"];
NSData *d = [NSKeyedArchiver archivedDataWithRootObject:dic];
從檔案生成NSData:
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"hello"  ofType:@"png"];
NSData *d = [[NSData alloc] initWithContentsOfFile:  path];
 取得元素長度:
int i = [d length];
NSData型轉成NSDictionary型:
NSDictionary *reverse = [NSKeyedUnarchiver unarchiveObjectWithData: d];

4.NSData與NSDate

//函式作用 :date根據formatter轉換成string
+(NSString*)dateToString:(NSString *)formatter date:(NSDate *)date
{
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:formatter];
    return[dateFormatter stringFromDate:date];
}

//函式作用 :string型別的時間戳轉換成時間
+(NSString*)dateStringToString:(NSString *)dateStr
{
    if ([dateStr isKindOfClass:[NSNull class]]) {
        return nil;
    }
    else{
        NSInteger time = [dateStr intValue];
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];
        NSString *timestr = [NSString stringWithFormat:@"%@",date];
        NSRange rang;
        rang.location = 0;
        rang.length = 10;
        NSString *needtime = [timestr substringWithRange:rang];
        return needtime;
    }
}


//函式作用 :將日期從原格式轉換成需要的格式
+(NSString*)convertDateFormatter:(NSString*)sourceFormatter
                  targetFormatter:(NSString*)targetFormatter  
                       dateString:(NSString*)dateString
{   
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:sourceFormatter];
    NSDate *date = [dateFormatter dateFromString:dateString];
    [dateFormatter setDateFormat:targetFormatter];
    return[dateFormatter stringFromDate:date];
}

//函式作用 :將日期字串轉換成date
+(NSDate *)stringToDate:(NSString *)formatter dateString:(NSString *)dateString{
 NSDateFormatter *dateFormatter= [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter setDateFormat:formatter];
 return [dateFormatter dateFromString:dateString];
}


//時間戳轉換成時間
                NSInteger time = [[dic objectForKey:@"press_date"] intValue];
                NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];
                NSString *timestr = [NSString stringWithFormat:@"%@",date];
                NSRange rang;
                rang.location = 0;
                rang.length = 10;
                NSString *needtime = [timestr substringWithRange:rang];
sh

相關推薦

NSData資料型別講解

NSData,資料,當我們需要把一些資訊寫入到檔案裡或傳送到網路上,我們需要把這些資料轉換下,變成純粹的0、1字元流 也就是網路中要傳資料的的時候,我們通常會用相應的NSData的資料來進行儲存。 1、 NSData 與 NSString:  //轉成UTF8的資料 NSS

Hadoop資料型別講解

序列化 所謂序列化(serialization),是指將結構化物件轉化為位元組流,以便在網路上傳輸或寫到磁碟進行永久儲存。反序列化(deserialization)是指將位元組流轉回結構化物件的過程。 序列化在分散式資料處理的兩大領域經常出現:程序間通訊和永

js中的棧與堆的講解/基本資料型別與引用型別講解

1、棧(stack)和堆(heap)   stack為自動分配的記憶體空間,它由系統自動釋放;而heap則是動態分配的記憶體,大小不定也不會自動釋放。        2、基本型別和引用型別   基本型別:存放在棧記憶體中的簡單資料段,資料大小確定,記憶體空間大小可以分配。   5種基

Object-C 中各資料型別轉換 NSData轉NSString,Byte,UIImage

1,NSData 與 NSString   NSData --> NSString   NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];   NSStri

結合案例講解MapReduce重要知識點 ----------- 自定義MapReduce資料型別(1)重寫Writable介面

重寫Writable介面 如下程式碼就是自定義mr資料型別,在wordcount類使用它。 WordCountWritable import java.io.DataInput; import java.io.DataOutput; import java.io.IOE

結合案例講解MapReduce重要知識點 ------- 使用自定義MapReduce資料型別實現二次排序

自定義資料型別SSData import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.WritableCompa

MySQL資料型別的詳細講解

在MySQL資料庫中,每一條資料都有其資料型別,MySQL支援的資料型別主要分成三類:數字型別、字串(或字元)型別、日期和時間型別。 一、數字型別 一般來說,數字型別可以分為整型和浮點型 1.1、整型資料型別 資料型別 取值範圍 說明

iOS NSDictionary、NSData、JSON資料型別相互轉換

iOS經常需要用到資料型別的轉換,下面列舉一下常用型別的轉換。 1.NSDictionary型別轉換為NSData型別: //NSDictionary -> NSData: NSDictionary *params = [NSDictionary dictionary

【Javascript基礎篇】——基本資料型別的特殊型別null,undefined講解及typeof用法

【前言】    在回顧javascript的時候總結了javascript的一些資料型別,它主要分為了兩種資料型別:基本型別和非基本型別(object型別);基本資料型別包括了:number,stri

Ocject-oc之基本資料型別NSData

NSData遵循NSCopying NSCoding協議,它提供面向物件的陣列儲存為位元組 , 適用與讀寫檔案,而讀寫檔案的時候需要一個緩衝區,而NSData就提供了這麼一個快取區 .

NSData與其它資料型別的轉化

1. NSData 與 NSString:NSData-> NSString NSString *aString = [[NSString alloc] initWithData:adataencoding:NSUTF8StringEncoding];NSStrin

圖例為你講解抽象資料型別——我用心寫,您用心“品”

【二】、什麼是抽象資料型別 前言 在上一篇【什麼是資料結構】中我詳細介紹了我對資料結構的理解,其實描述資料結構,有一個很好的方法叫抽象資料型別。下面我會詳細介紹抽象資料型別。 抽象資料型別 抽象資料型別英文名叫(Abstract Data Type),這裡有兩個關鍵詞,一個叫“資料型別&rdquo

c理解提高(1)資料型別的本質分析

資料型別本質分析 資料型別概念 “型別”是對資料的抽象  型別相同的資料有相同的表示形式、儲存格式以及相關的操作  程式中使用的所有資料都必定屬於某一種資料型別   資料型別的本質思考  思考資料型別和

Java中8種基本資料型別及其預設值

Java語言中有8種基本資料型別,基本情況彙總如下: Java中8種基本資料型別總結 序號 資料型別 大小/位 封裝類 預設值 可表示資料

JAVA面試知識點總結--資料型別

一、資料型別 基本資料型別 數值型別: 運算and型別轉換 自動裝拆箱and比較 bool

redis安裝及其資料型別簡介

Windows下安裝 redis的安裝十分簡單,首先從github上下載安裝包,地址:下載地址 下載完成後解壓到c盤,為了方便操作可以將解壓後的檔案重新命名為“redis”,然後開啟一個cmd 視窗使用cd命令切換目錄到 C:\redis 之後輸入redis-server.ex

包裝類(Integer/Boolean等、字串與基本資料型別轉化,-127-128自動裝箱入池)

為什麼要有包裝類? Object類可以接收所有引用資料型別。然而在Java中,資料型別分為基本資料型別和引用資料型別,那麼基本資料型別如何處理呢? 使用包裝類 :包裝類是將基本資料型別封裝到類中,因為Object無法接受基本資料型別,封裝成類後就可以用Object類來接收。 簡單定義一個in

Object類(覆寫toString/equals/接收引用資料型別

什麼是Objetc類? Object是JAVA預設提供的類。 在Java中除了Object類,所有的類都有繼承關係,預設會繼承Object父類,所有類物件都可以通過Object類進行接收,即向上轉型。 ////Object可以接收任何類 class A{} class B{} publi

Java初認識--基本資料型別(int 和byte之間賦值)預設值 型別強轉

主類和主方法 Test.java–是原始檔,原始檔必須與主類名(public class )保持一致,一個原始檔只能有一個主類 ,主方法存在與主類中。 Test.java 原始檔 主類:public class Test 主方法 : public static void main(Strin

JS中資料型別的分類

JS中資料型別的分類: (1).基本資料型別: 1.數字(number) 2.字串(string) 3.布林(boolean) 4.null 5.undefined (2).引用資料型別: 1.物件資料型別(object) 2.函式資料型別(function)