How can I store a float value in an NSArray?

前端 未结 2 780
小蘑菇
小蘑菇 2021-01-12 05:13
for ( tempI = 0; tempI < 10; tempI++ )  
{
    tempJ = 1;
    NSArray *objectsForArray = [NSArray arrayWithObjects:@\"array[tempI][tempJ]\", @\"array[tempI][tempJ         


        
相关标签:
2条回答
  • 2021-01-12 05:50

    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 讨论(0)
  • 2021-01-12 05:59

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

    + (NSNumber *)numberWithFloat:(float)value
    

    therefore you could populate your array like this:

    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 issue, you could 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];
    

    as far as using a dictionary to retrive matrix values, the only way I can think off would be to key code your matrix values as such:

    A1 A2 A3 A4

    B1 B2 B3 B4

    C1 C2 C3 C4

    D1 D2 D3 D4

    for example:

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

    Also, it is important to point here that whenever something is written under the format @"something here", it literally is 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 exactly the same as 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];
    
    0 讨论(0)
提交回复
热议问题