objective c之各種數值

2021-06-05 17:59:15 字數 1963 閱讀 3076

nsarray和nsdictionary都只能儲存物件,不能儲存任何基本型別的資料,如int,float,struct。因此我們可以用物件來封裝基本的數值。

cocoa提供了nsnumber來儲存物件,但不能儲存c裡面的各種資料,所以我們要用一些相應的物件來進行封裝。

nsnumber類來包裝基本資料物件。可以有下列方法:

+ (nsnumber *) numberwithchar: (char) value;

+ (nsnumber *) numberwithint: (int) value;

+ (nsnumber *) numberwithfloat: (float) value;

+ (nsnumber *) numberwithbool: (bool) value;

只要將乙個基本型別資料封閉到nsnumber中後,就可以通過下面的例項方法重新獲得它:

- (char) charvalue:

- (int) intvalue;

-(float)floatvalue;

- (bool)boolvalue;

- (nsstring *) stringvalue;

nsnumber實際上是nsvalue的子類,nsvalue可以包裝任意值,你可以用nsvalue將結構放入nsarray和nsdictionary中,通過下列方法建立新的nsvalue:

+ (nsvalue *) valuewithbytes:(const void *) values

objctype:(constchar*) type;

傳遞的引數是你想要包裝的數值的位址(如乙個nssize或者你自己的struct)。通常,得到的是你想要儲存的變數的位址,你也可以提供乙個用來描述這個資料型別的字串,通常用來說明struct中實體的型別和大小。如下例所示,將nsrect放入到nsarray中:

nsrect rect = nsmakerect(1, 2, 30, 40);

nsvalue *value;

value = [nsvalue valuewithbytes: &rect

objctype: @encode(nsrect)];

[array addobject: value];

可以使用getvalue:來提供數值:

- (void) getvalue: (void *) vaule;

value = [array objectatindex:0];

[value getvalue: &rect];

cocoa提供了將常用的struct型資料轉換成nsvalue便捷方法,如下所示:

+ (nsvalue*) valuewithpoint:(nspoint) point;

+ (nsvalue*) valuewithsize:(nssize) size;

+ (nsvalue*) valuewithrect:(nsrect) rect;

- (nspoint) pointvalue;

- (nssize) sizevalue;

- (nsrect) rectvalue; 例:

value = [nsvalue valuewithrect:rect];

[array addobject:value];

…nsrect anotherrect = [value rectvalue];

有時確實需要存乙個null值,而大多數的物件裡面是不允許存nil值的,那麼使用nsnull就可以解決這個問題。

+ (nsnull *) null; 例:

[contact setobject:[nsnull null]

forkey:@」home fax machine」];

那麼怎麼進行訪問及判斷呢:

id homefax;

homefax = [contact objectforkey:@」home fax machine」];

if(homefax == [nsnull null])

寒假筆記 各種數

卡特蘭數又稱卡塔蘭數,英文名catalan number,是組合數學中乙個常出現在各種計數問題 現的數列。以比利時的數學家歐仁 查理 卡塔蘭 1814 1894 的名字來命名,其前幾項為 從第零項開始 1,1,2,5,14,42,132,429,1430,4862,16796,58786,20801...

VBA之連線各種資料庫

1.連線各種資料庫介面 dim conn as new adodb.connection conn.open provider microsoft.ace.oledb.12.0 data source d data edata.xlsx extended properties excel 12.0 ...

WPF 繫結各種資料來源之Datatable

一 binding是wpf的核心,wpf的資料來源有以下幾種 1 ado.net中的datatable 2 xml資料來源 3 object資料來源 4 元素控制項屬性 二 wpf繫結各種資料來源索引 wpf 繫結各種資料來源之 datatable wpf 繫結各種資料來源之 object 資料來源...