如何在NSArray中存储浮点值? [英] How can I store a float value in an NSArray?

查看:65
本文介绍了如何在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];
}

我可以写上面的代码。我需要在 NSArray 中存储一个浮点值(array [] [])。我可以这样做吗?

我的问题是,我有一个矩阵

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

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



我需要检索值0.4,0.3,0.5),使用1.0,2.0,3.0。我如何使用NSDictionary为此?

谢谢

I need to retrieve 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];
}

我可以这样写吗?目标C接受吗?

Can I write in this way ? Does Objective C accepts it ?

我收到了错误


error: variable-sized object may not be initialized



推荐答案

NSArray只能存储对象,而不是基元,幸运的是,NSNumber类有一个方便的方法,它接受一个float基元,并返回一个float对象:

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


$ b b

因此你可以这样填充你的数组:

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

A1 A2 A3 A4

B1 B2 B3 B4

B1 B2 B3 B4

C1 C2 C3 C4

C1 C2 C3 C4

D1 D2 D3 D4

D1 D2 D3 D4

示例:

 NSMutableDictionary *myDictionary;

[myDictionary setObject:[NSNumber numberWithFloat:5.0] forKey:@"A1"];

...

NSNumber *myFloat = [myDictionary objectForKey:@"A1"];

此外,重要的是要指出, ,它字面上是一个NSString对象。所以当你写:

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

这与写入完全一样:

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

这篇关于如何在NSArray中存储浮点值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆