ここには、(少なくとも) 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 オブジェクトのみを保持できます。したがって、int
s またはfloat
s を保存する場合は、コレクションに追加する前にそれらを 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