2014-05-20 49 views
2

來自初學者的問題:)如何製作一組數字? (xcode)

我正在嘗試製作一組​​數字。我需要調用這個數組的每個元素。 (數組[我])。我已經做了這樣的:

NSNumber *array[] = {@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f}; 

,但是當我打電話這個數組它給了我一個錯誤:

Expected method to read array element not found on object of type "NSNumber" 

謝謝。

附加代碼註釋感動:

int SIZE = 97; 
fftw_complex *data, *fft_result, *ifft_result; 
fftw_plan  plan_forward, plan_backward; 
int   i; 
NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f]; 

float a0 = [array[0] floatValue]; 
data = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * SIZE); 
fft_result = ... 
ifft_result = ... 
plan_forward = ... 
plan_backward ... 

for(i = 0 ; i < SIZE ; i++) { 
    data[i][0] = array[i]; 
    data[i][1] = 0.0; 
} 
+0

'數據[I] [0] =陣列[I];'應'[陣列[I]的floatValue];' – zaph

+0

@Zaph YOU解決它, 其工作,我被掛在這裏從兩天前:) 非常感謝 – josef

回答

0

有兩個問題

首先創建數組的聲明有錯誤,「[]」後的變量和使用「{}」而不是「[]」來初始化一個數組。

然後從註釋中以兩種方式訪問​​數組項。該陣列是一個縮小,而不是兩個縮小。然後從陣列返回的是NSNumber並且必須拆箱,即從NSNumber轉換爲float

下面是示例代碼校正的錯誤:

NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f]; 
float a0 = [array[0] floatValue]; 
NSLog(@"a0: %f", a0); 

的NSLog輸出:

a0: 0.240128

最好的辦法:花時間去了解NSArray訪問和Objective-C一般。網上有很多資源,既有手冊/文檔和教程。

+0

感謝您的激情。 陣列正在工作。 請問您可以看看我的代碼,並告訴我我做錯了什麼? NSArray * array = @ [@ 0.240128f,@ 0.240128f,@ 0.953934f,@ 1.181351f,@ 1.382523f,@ 1.497086f,@ 1.437790f,@ 0.851196f]; float a0 = [array [0] floatValue];對於(i = 0; i josef

+0

我將上面的代碼添加到問題中,您可以編輯自己的問題。如果不正確,請根據需要進行編輯。請刪除上面的評論。 – zaph

+0

我的主要問題是它再次從file.txt調用一些數據(它在這個問題中:[link](http://stackoverflow.com/questions/23748427/how-to-get-from-a-file-txt我需要在X代碼) 我無法解決它,所以現在我試圖將數據保存在一個數組中,並直接使用它 – josef

0

你大概初始化數組,但在「仿製藥」的時尚。 Objective-C不支持泛型。

這裏是你應該如何初始化NSNumbers的一個NSArray:

NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f]; 
+0

謝謝你的快速回答。 我這樣做,但我得到這個錯誤旁邊︰ 'NSArray * array = @ {@ 0.240128f,@ 0.240128f,@ 0.953934f,@ 1.181351f,@ 1.382523f,@ 1.497086f,@ 1.437790 f,@ 0.851196f}; 預期; 。 ' 指向前兩個數字之間的第一個逗號。 – josef

+0

通過調用這個數組我也得到這個錯誤: '從不兼容類型「id」指定爲「double」 – josef

+2

@Eimantas對於數​​組使用「[」和「]」的語法不正確,使用「 {「和」}「。正確的語句:NSArray * array = @ [@ 0.240128f,@ 0.240128f,@ 0.953934f,@ 1.181351f,@ 1.382523f,@ 1.497086f,@ 1.437790f,@ 0.851196f]; ' – zaph