Mar*_*ark 1 objective-c nsarray iphone-sdk-3.0 ios
我最近遇到了一个问题.这是事情,我正在尝试从NSArray获取一个浮动对象来保存它,而我所能得到的只是(null).显然不是我想要收到的东西.看一下代码片段:
h = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithFloat:1.0],[NSNumber numberWithFloat:1.0],[NSNumber numberWithFloat:1.0], nil];
x = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithFloat:1.0],[NSNumber numberWithFloat:2.0], nil];
y = [[NSMutableArray alloc] init];
int step = 15; // That is just a random value, will depend on size of h and x.
for (int i = 0; i < step; ++i) {
NSLog(@"step = %i", i);
NSMutableArray *xTemp = [[NSMutableArray alloc] initWithArray:x];
NSMutableArray *hTemp = [[NSMutableArray alloc] initWithArray:h];
for (int j = 0; j < 3; ++j) {
float xToMul = [[xTemp objectAtIndex:j] floatValue];
float hToMul = [[hTemp objectAtIndex:(j+i)] floatValue];
NSLog(@"xToMul = %@", xToMul);
NSLog(@"hToMul = %@", hToMul);
}
NSLog(@"\n");
}
Run Code Online (Sandbox Code Playgroud)
结果是:
xToMul = (null)
hToMul = (null)
Run Code Online (Sandbox Code Playgroud)
而我所需要的就是做一些简单的数学运算.
谢谢.先生
这是你的问题:
float xToMul = [[xTemp objectAtIndex:j] floatValue]; float hToMul = [[hTemp objectAtIndex:(j+i)] floatValue];
NSLog(@"xToMul = %@", xToMul); NSLog(@"hToMul = %@", hToMul);
Run Code Online (Sandbox Code Playgroud)
%@用于支持-description的对象.float根本不是一个对象.此代码发送浮动a -description消息,它无法响应.
有两种方法可以解决这个问题.
第一种是制作xToMul和hToMul对象而不是浮点数并保留格式字符串.
id xToMul = [xTemp objectAtIndex:j];
id hToMul = [hTemp objectAtIndex:(j+i)];
NSLog(@"xToMul = %@", xToMul);
NSLog(@"hToMul = %@", hToMul);
Run Code Online (Sandbox Code Playgroud)
第二个是将它们保留为浮点数但修复格式字符串:
float xToMul = [[xTemp objectAtIndex:j] floatValue];
float hToMul = [[hTemp objectAtIndex:(j+i)] floatValue];
NSLog(@"xToMul = %f", xToMul);
NSLog(@"hToMul = %f", hToMul);
Run Code Online (Sandbox Code Playgroud)
如果你打算用浮点数做数学运算,你可能想选择这个选项.
另一个有趣的观点是这个循环:
for (int j = 0; j < 3; ++j) {
Run Code Online (Sandbox Code Playgroud)
这将使用三个值逐步执行j:0,1和2.这对应于NSArray中的第一个,第二个和第三个项目.你有两个项目x和三个h.我猜这只是原始代码的简化,但在这两种情况下都是简短的.j为2 + 1将访问第4项h,而j为2将访问第3项x.
| 归档时间: |
|
| 查看次数: |
2755 次 |
| 最近记录: |