0

私は自分の最初のiphoneプログラムを作成しようとしていますが、2つのdimの配列または行列を作成するのは難しいことに気づきました... :-(

*どのようにそしてどこで私はこのような何かを宣言します(javaから取得)ので、すべての関数はそれを見ることができます:

int[] myArray = new int[6];

*この関数をどのようにtrnsleteできますか:

  public  int[] sortArray (int[] myArray){
  int tmp;
  for (int x = 0; x < myArray.length; x++) {
   for (int y = x+1; y < 6; y++) {
    if (myArray[y] < myArray[x]) {
     tmp = myArray[x];
     myArray[x] = myArray[y];
     myArray[y] = tmp;
    }
   }
  }
  return myArray;
 }

*そしてこの関数をどのように呼び出すのですか?

sortArray(myArray);

みんなありがとう!!! シャロン

4

4 に答える 4

5

次の 1 行のコードで実行できます。

NSArray *array = @[@[@1, @2, @3],
                   @[@4, @5, @6],
                   @[@7, @8, @9]];

Objective-C のリテラルについては、こちらをご覧ください。

于 2013-03-20T14:35:57.947 に答える
1

それぞれの .h ファイルで宣言します

NSMutableArray *numbers; 

次に、.mファイルで

numbers = [[NSMutableArray alloc] init];

 for (NSInteger i = 0; i < 6; i++)
     [numbers addObject:[NSNumber numberWithInteger:i]];

.h で次のように宣言します。

-(NSMutableArray *)sortArray:(NSMutableArray *)numbers;

これは、Objective-C の上記の翻訳されたメソッドです。

-(NSMutableArray *)sortArray:(NSMutableArray *)numbers
{
  NSInteger tmp = 0;
  for(int x = 0; x < [numbers count]; x++)
   for(int y = x + 1; y < 6; y++)
     if([numbers objectAtIndex:y] < [numbers objectAtIndex:x])
     {
       tmp = [numbers objectAtIndex:x];
       [numbers replaceObjectAtIndex:x withObject:[numbers objectAtIndex:y]];
       [numbers replaceObjectAtIndex:y withObject:tmp];
     }
  return numbers;
}

また、次のように object-c でメソッドを呼び出すこともできます。

[self sortArray:numbers];
于 2013-03-20T14:35:50.390 に答える
0

ここには、(少なくとも) 2 つの関連する別の質問があるようです。

1/ 数値の配列を作成する方法

Objective-C の配列は、不変の NSArray (固定コンテンツ) または可変の NSMutableArray (コンテンツの削除とシャッフルを追加できます) として提供されます。書かれているように関数をソートすると、可変配列が求められます。

NSNumber オブジェクトを使用して不変配列を作成および設定するには:

NSArray* array = @[@3,@5,@8,@2,@9,@1];   //"@1" is an NSNumber object literal
  //access: array[3] etc

多次元:

NSArray* arrayOfArrays @[@[@3,@5,@8],@[@2,@9,@1]];
  //access: arrayOfArrays[1][2] etc

空の可変長可変配列を作成するには

NSMutableArray* mutableArray = [[NSMutableArray alloc] init];

可変長の変更可能な配列を作成して設定する

myArray = [NSMutableArray arrayWithObjects:@3,@5,@8,@2,@9,@1, nil];  //note nil termination

不変の NSArray を可変の NSMutableArray に変換するには

NSMutableArray* mutableArray = [array mutableCopy];

(ただし、これはトップ レベルのみを可変としてレンダリングすることに注意してください。不変のサブ配列が含まれている場合、それらは不変のままになります)

Objective-C コレクション (NSArray、NSDictionary、NSSet) は、Objective-C オブジェクトのみを保持できます。したがって、ints またはfloats を保存する場合は、コレクションに追加する前にそれらを Objective-C NSNumber オブジェクトにボックス化し、再度ボックス化解除して値にアクセスする必要があります。

int x;
float y;

NSNumber xNum = [NSNumber numberWithInt:x];  //box
NSNumber yNum = [NSNumber numberWithFloat:y];  //box


x = [xNum intValue]; //unbox
y = [yNum floatValue]; //unbox

2/ コードの翻訳方法

以下は、同様の翻訳です。

(変更可能な) myArray オブジェクトを作成するには:

NSMutableArray* myArray = [[NSMutableArray alloc] init];
Populate it:
[myArray addObjects:@3,@6,@8,@1,@9,nil];   //last value is nil to indicate termination

メソッド:

- sortArray:(NSMutableArray*)myArray
{
    id tmp;
    for (int x = 0; x < [myArray count]; x++) {
        for (int y = x+1; y < 6; y++) {
            if ([myArray[y] floatValue] < [myArray[x] floatValue]) {
                tmp = myArray[x];
                myArray[x] = myArray[y];
                myArray[y] = tmp;
            }
        }
    }
}

呼び出すには:

[self sortArray:myArray];

オブジェクト スコープで宣言するには、 @interface セクションでプロパティを作成します

@interface myObject:NSObject
@property (nonatomic, strong) NSMutableArray* myArray;
@end

myArray を使用する前に作成する必要があります。

self.myArray = [[NSMutableArray alloc] init];

ただし、次のように、オブジェクト内のどこからでも値を設定してアクセスできます。

self.myArray

そして、それがパブリック ヘッダー ファイルの @interface セクションにある場合は、オブジェクトの外側から:

myObject.myArray
于 2013-03-20T14:52:29.497 に答える