2013-02-22 21 views
1

我在objectiveC中有一個變量double * data = malloc(sizeof(double));將雙數組存儲爲NSNumber

我正在使用這個變量作爲像data []這樣的雙數組來存儲一些數據。現在我想添加這個數據變量(這是一個double *數組)作爲對象NSNumber in iOS. Any idea how I can turn it into iOS object like NSNumber`?

回答

2

您可以使用NSData將任意字節緩衝區包裝到Objective-C對象中。

使用dataWithBytes:length:從你的雙陣列創建NSData對象,bytes:getBytes:length:檢索數據字節從NSData對象返回。

+0

這似乎是解決我的問題。感謝Martin。 – Dinesh 2013-02-22 11:14:25

0

基於曼迪的回答,試試這個:

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0]; 
for (int i = 0; i < lengthOfDoublearray; i++) { // as premitive DataType array needs predefined length 
    [array addObject:[NSNumber numberWithDouble:data[i]]]; 
} 

這裏datadouble陣列(你使用)。

+0

我需要一些分揀機一個變量,可以容納整個雙指針。 – Dinesh 2013-02-22 10:48:15

+0

正如我所說的你首先需要看看蒙迪的答案。 :) – rptwsthi 2013-02-22 10:50:50

+0

我已經看過。似乎沒有捷徑解決方案。 – Dinesh 2013-02-22 10:54:27

1

您無法將原始數組轉換爲一個NSNumber。這沒有任何意義。

但是,您可以將一個雙精度數組轉換爲NSNumbers的數組。迭代你的double *數組,並使用它的類方法numberWithDouble:將每個數字加到NSMutableArray中作爲NSNumber

+0

阿哈我運氣不好。我希望這個雙精度數組在NSArray中存儲爲單個對象,並且希望在某個其他點將其重新獲取爲double []。不知何故,它可能沒有一個NSNumber數組? – Dinesh 2013-02-22 10:42:17

+0

爲什麼?您可以輕鬆地將NSArray存儲在用戶首選項或plist文件中,甚至可以作爲另一個陣列的元素。 – Mundi 2013-02-22 12:57:32