How to save float value in NSArray?

for ( tempI = 0; tempI < 10; tempI++ ) { tempJ = 1; NSArray *objectsForArray = [NSArray arrayWithObjects:@"array[tempI][tempJ]", @"array[tempI][tempJ+1]", @"array[tempI][tempJ+2]", nil]; } 

Can I write the code as above. I need to store the value of float (array[][]) in an NSArray . Can I do it?
My problem is that I have a matrix like

 1.0 0.4 0.3 0.5 2.0 0.4 0.5 0.5 3.0 4.3 4.9 0.5 

I need to get the values ​​(0.4, 0.3, 0.5) using 1.0, 2.0 3.0. How can I use NSDictionary for this?
Thank you.

 for( tempI = 0; tempI < 5; tempI++) { NSDictionary *dictionary[tempI] = [ [NSDictionary alloc] initWithObjects:@"array[tempI][tempI + 1]", @"array[tempI][tempI + 2]", @"array[tempI][tempI + 3]", @"array[tempI][tempI + 4]", @"array[tempI][tempI + 5]", nil]; } 

Can I write this way? Does Objective-C Promote?

I get an error like

 error: variable-sized object may not be initialized 
+7
objective-c cocoa-touch cocos2d-iphone
source share
2 answers

NSArray can store objects, not primitives, fortunately, the NSNumber class has a convenience method that takes a float primitive and returns a float object as such:

 + (NSNumber *)numberWithFloat:(float)value 

so you can fill your array as follows:

 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 

As for your specific problem, you can write:

 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]; 

if you use a dictionary to extract matrix values, the only way I can come up with is key code your matrix values ​​as such:

A1 A2 A3 A4

B1 B2 B3 B4

C1 C2 C3 C4

D1 D2 D3 D4

eg:

  NSMutableDictionary *myDictionary; [myDictionary setObject:[NSNumber numberWithFloat:5.0] forKey:@"A1"]; ... NSNumber *myFloat = [myDictionary objectForKey:@"A1"]; 

In addition, it is important to indicate that whenever something is written in the @ "something here" format, it is literally an NSString object. so when you write:

 NSArray *objectsForArray = [NSArray arrayWithObjects: @"array[tempI][tempJ]", @"array[tempI][tempJ+1]", @"array[tempI][tempJ+2]", nil]; 

this is the same as spelling:

 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]; 
+18
source share

Try:

 for ( int tempI = 0; tempI < 10; tempI++ ) { int tempJ = 1; fl_tempI = float(tempI); NSArray *objectsForArray = [NSArray arrayWithObjects:@"array[fl_tempI][tempJ]", @"array[fl_tempI][tempJ+1]", @"array[fl_tempI][tempJ+2]", nil]; } 
0
source share

All Articles