NSArray ne pouvez stocker des objets, pas primitives, amuserez, la classe NSNumber a une méthode pratique qui prend une primitive flottante et renvoie un objet flottant en tant que tel:
+ (NSNumber *)numberWithFloat:(float)value
donc vous pouvez alimenter votre tableau comme ceci:
float exampleFloat = 5.4;
NSArray *anArrayOfFloatObjects = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:10.0],
[NSNumber numberWithFloat:2],
[NSNumber numberWithFloat:4],
[NSNumber numberWithFloat:exampleFloat],
nil]; // Don't forget the nil to signal
// end of the array
Quant à votre question spécifique, vous pouvez écrire:
NSMutableArray *tmpArray; // this is necessary since an NSArray can only be initialized
// once and we will need to have all the objects that will be
// added to the array available to us at once.
tmpArray = [NSMutableArray arrayWithCapacity:12]; // returns an autoreleased empty array
for (int col=0; col<=3; col++) {
for (int row=0; row<=2; row++) {
[tmpArray addObject:[NSNumber numberWithFloat:array[col][row]]];
}
}
NSArray *myArray = [NSArray arrayWithArray:tmpArray];
jusqu'à utiliser un dictionnaire pour retrive valeurs de la matrice, la seule façon Je pense hors serait de code clé vos valeurs de la matrice en tant que tels:
A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4
par exemple:
NSMutableDictionary *myDictionary;
[myDictionary setObject:[NSNumber numberWithFloat:5.0] forKey:@"A1"];
...
NSNumber *myFloat = [myDictionary objectForKey:@"A1"];
, il est également important de souligner ici que chaque fois que quelque chose est écrit sous la format @ "quelque chose ici", c'est littéralement un objet NSString. donc quand vous écrivez:
NSArray *objectsForArray = [NSArray arrayWithObjects:
@"array[tempI][tempJ]",
@"array[tempI][tempJ+1]",
@"array[tempI][tempJ+2]",
nil];
c'est exactement le même que writting:
NSString *newString = @"Roses are red"; // example strings
NSString *newString1 = @"Violets are blue";
NSString *newString2 = @"array[tempI][tempJ+1]";
NSString *newString3 = @"These are all string objects";
NSArray *objectsForArray = [NSArray arrayWithObjects:
@"array[tempI][tempJ]",
newString2,
@"array[tempI][tempJ+2]",
nil];
Puis-je demander pourquoi voulez-vous stocker une matrice 3D dans NSArray? – Prcela