Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode:从heightForCellAtIndexPath中的NSMutableArray返回浮点_Ios_Objective C_Uitableview_Parse Platform - Fatal编程技术网

Ios Xcode:从heightForCellAtIndexPath中的NSMutableArray返回浮点

Ios Xcode:从heightForCellAtIndexPath中的NSMutableArray返回浮点,ios,objective-c,uitableview,parse-platform,Ios,Objective C,Uitableview,Parse Platform,场景=我有一个PFQueryTableViewController,根据查询返回的值,每个indexPath需要不同大小的单元格。如果图像为“横向尺寸”,则为一种尺寸,如果图像为“纵向尺寸”,则为另一种尺寸 1) 我在.h文件中创建了一个NSMutableArray来保存大小 @property (strong, nonatomic) NSMutableArray *rowHeightArray; 2) 对于每个对象,我检查cellForRowAtIndexPath中的值并将其添加到数组中 i

场景=我有一个PFQueryTableViewController,根据查询返回的值,每个indexPath需要不同大小的单元格。如果图像为“横向尺寸”,则为一种尺寸,如果图像为“纵向尺寸”,则为另一种尺寸

1) 我在.h文件中创建了一个NSMutableArray来保存大小

@property (strong, nonatomic) NSMutableArray *rowHeightArray;
2) 对于每个对象,我检查cellForRowAtIndexPath中的值并将其添加到数组中

if ([object[@"orientation"] isEqual:@"left"] || [object[@"orientation"] isEqual:@"right"]) {

    [rowHeightArray addObject:[NSNumber numberWithFloat:378]];
}

else {

    [rowHeightArray addObject:[NSNumber numberWithFloat:488]];
}
(不止这两种可能性,但我认为这足以说明问题)

问题

3) 现在我需要将正确的高度放置到正确的单元格。问题是当我尝试

return self.rowHeightArray[indexPath.row];
在heightForRowAtIndexPath中,它对我“大叫”:

returning 'id' from a function with an incompatible result type 'CGFloat' (aka 'float')
或者我也试过了

return [self.rowHeightArray[indexPath.row]floatValue]
这会停止对我“大喊大叫”,但当我尝试运行时,它会出错:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
问题=我如何完成我在这里试图做的事情并让它“工作”?

两个问题:

  • heightforrowatinexpath:
    cellforrowatinexpath:
    之前调用。因此,您当前的方法计算高度太晚了。您需要在
    heightforrowtaindexpath:
    或更早的版本中(例如,在
    viewDidLoad
    中,或在
    PFQuery
    完成时)计算它
  • 您返回的是一个
    NSNumber
    对象,而不是
    CGFloat
    。您需要取消装箱:

    NSNumber *heightNumber = self.rowHeightArray[indexPath.row];
    return [heightNumber floatValue];
    
  • 当然,这不适用于当前的实现,因为(正如rmaddy指出的)
    self.rowHeightArray
    是空的。因此,如果要使用此数组,需要确保在调用
    heightforrowatinexpath:
    之前填充该数组。

    有两个问题:

  • heightforrowatinexpath:
    cellforrowatinexpath:
    之前调用。因此,您当前的方法计算高度太晚了。您需要在
    heightforrowtaindexpath:
    或更早的版本中(例如,在
    viewDidLoad
    中,或在
    PFQuery
    完成时)计算它
  • 您返回的是一个
    NSNumber
    对象,而不是
    CGFloat
    。您需要取消装箱:

    NSNumber *heightNumber = self.rowHeightArray[indexPath.row];
    return [heightNumber floatValue];
    

  • 当然,这不适用于当前的实现,因为(正如rmaddy指出的)
    self.rowHeightArray
    是空的。因此,如果要使用此数组,需要确保在调用
    heightforrowatinexpath:
    之前填充它。

    要详细说明@AaronBrager的正确答案,请加载,然后在调用数据源之前构建浮点数组。这可以在PFTable vc给您调用的钩子中完成。要在注释中回答您的问题,不需要indexPath,因为我们知道self.objects数组索引、您在此处构建的索引以及传递给datasource方法的索引都将对应(0..self.objects.count-1):


    要详细说明@AaronBrager的正确答案,请加载,然后在调用数据源之前构建浮点数组。这可以在PFTable vc给您调用的钩子中完成。要在注释中回答您的问题,不需要indexPath,因为我们知道self.objects数组索引、您在此处构建的索引以及传递给datasource方法的索引都将对应(0..self.objects.count-1):


    读取最后一个错误。它告诉你问题所在
    rowHeightArray
    是空的。我想我应该感谢您没有将其作为回答lol。如果您不介意,为什么它是空的?是因为CellForRowatineXpath在HeightForRowatineXpath之后被调用吗?如果是这样,在调用HeightForRowatineXpath之前,如何使用适当的数据填充NSMutableArray?@BillyA-PFTableVC为您提供了一个钩子:-(void)objectsDidLoad:。。。在那里运行它们以构建浮点数组。(我想)这是在vc重新加载表格之前打电话的。谢谢danh。我现在就去试试。嘿,丹,我正在做这个,我有点像个傻瓜。如何在ObjectsIDLoad方法中构建浮点数组以提取正确的信息?在我的问题之前,我做了
    如果([object[@“orientation”]isEqual:“left”]|[object[@“orientation”]isEqual:“right”])
    然后做了我需要做的事情。如果objectsDidLoad中没有为您提供能够使用objectAtIndex:with的
    对象,如何获取objectAtIndex:with?请阅读最后一个错误。它告诉你问题所在
    rowHeightArray
    是空的。我想我应该感谢您没有将其作为回答lol。如果您不介意,为什么它是空的?是因为CellForRowatineXpath在HeightForRowatineXpath之后被调用吗?如果是这样,在调用HeightForRowatineXpath之前,如何使用适当的数据填充NSMutableArray?@BillyA-PFTableVC为您提供了一个钩子:-(void)objectsDidLoad:。。。在那里运行它们以构建浮点数组。(我想)这是在vc重新加载表格之前打电话的。谢谢danh。我现在就去试试。嘿,丹,我正在做这个,我有点像个傻瓜。如何在ObjectsIDLoad方法中构建浮点数组以提取正确的信息?在我的问题之前,我做了
    如果([object[@“orientation”]isEqual:“left”]|[object[@“orientation”]isEqual:“right”])
    然后做了我需要做的事情。如果objectsDidLoad中没有为您提供能够使用objectAtIndex:with的
    对象,如何获取objectAtIndex:with?请在查询完成后填充它。然后重新加载表格。嘿,亚伦,谢谢你的回复!我现在正在做这个,但只是一个问题。如果我错了,请纠正我(因为我可能错了),我认为用
    numberwhithfloat
    生成一个
    NSNumber
    会生成一个CGFloat。这是错误的。NSNumber是围绕非对象编号的对象包装器。(
    NSNumber
    是一个对象,但
    CGFloat
    不是)在查询完成时填充它。然后重新加载表格。嘿,亚伦,谢谢你的回复!我在工作