2011-11-07 5 views
0

私はそれで2つの要素以下のようなもので1D配列を返す関数を作成したい:objective-cで配列を操作する最も簡単な方法は何ですか?

(NSArray *) myFunction { 
NSArray * myArr = [[NSArray alloc]initwithobjects:[NSNumbers numberwithfloat:1.0f],[NSNumbers numberwithfloat:1.0f]]; 
//the above line is just pseudo code 

} 

が、私はNSArrayのフォームにこの機能を取得するときに私は はそれが最も簡単な方法でそれをやってみたいですObjective-Cの に不可能だ、これは私がappropariateされていない2つの簡単な浮動小数点値を取得するために書かれたものですが、私は簡単な方法で上記のコード

NSArray *tt2 = [[NSArray alloc] initWithArray:[self myFunction]]; 
float fp1=0.0f; 
    float fp2=0.0f; 
    BOOL firstTime = YES; 
    for(NSNumber *n in tt2) 
    { 
     if (firstTime) { 
      NSLog(@"%@" , n); 
      fp1 = [n floatValue]; 
      firstTime = NO; 
     } 
     else { 
      fp2 = [n floatValue]; 
     } 

    } 

それをやってする方法のいずれかのさらなる知識を持っていません嘲笑ですが、アドバイスがなければ他の選択肢はありません私はどのようにnsarrayをnsnumberに変換してからnsnumberを浮動小数点に変換できますか?

答えて

3

浮動小数点数を格納するだけの場合は、代わりにC配列を使用できます。 NSArrayはオブジェクトのみを格納できます。

しかし、objectAtIndexメソッドについて聞いたことがないようですか?

NSNumber *firstNumber = [myArray objectAtIndex:0]; 
NSNumber *secondNumber = [myArray objectAtIndex:1]; 

あなたの状況に役立つかどうかは、その質問から何をしようとしているのかは分かりません。

+0

私はfloat []を別の関数から返すことができないと読んだことがあります。なぜ私たちは膨大な数の膨大なコードを作成しなければならないのですか? –

+0

それはそうであるか、少なくともそれを行うのは簡単ではない - 私はそれを知らなかった、情報のおかげで!私はあなたが他のオブジェクトからアクセスしていない場合でも、C配列をivarとして持つことができると思います。 – jrturton

2

C配列を使用してください。

// C function returning dynamically allocated array of floats. 
float *CreateNumbers(void) 
{ 
    float *numArray = malloc(sizeof(float)); 
    numArray[0] = 1.0; 
    numArray[1] = 2.0; 

    return numArray; 
} 


- (void)exampleMethod 
{ 
    float *numbers = CreateNumbers(); 
    float val1 = numbers[0]; 
    float val2 = numbers[1]; 

    NSLog(@"val1: %.2f, val2: %.2f\n", val1, val2); 

    free(numbers); 
} 
関連する問題