WARNUNG: "Der Empfänger der Nachricht" sizewithfont: ConneNtedTosize: lineBreakMode: "ist nil ..."
-
24-10-2019 - |
Frage
Ich habe diese Warnung bekommen:
"Der Empfänger der Nachricht 'sizewithfont: ConneNtedTosize: lineBreakMode:' ist nil und gibt einen Wert vom Typ 'cgsize' zurück, der Müll ist."
Ich verstehe es nicht. Was mache ich falsch?
Hier ist der Code, den ich verwende:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *text = nil;
NSUInteger row = indexPath.row;
if (indexPath.section == FIRST_SECTION) {
text = [_firstArray objectAtIndex:row];
} else if (indexPath.section == SECOND_SECTION) {
text = [_secondArray objectAtIndex:row];
} else {
text = nil;
NSLog(@"Wrong section");
}
UITableViewCell *cell = [self myCell];
UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;
CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
UIFont* font = cell.textLabel.font;
CGSize size = [text sizeWithFont:font
constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
lineBreakMode:lineBreakMode];
if (size.height > kMaxLabelHeight) size.height = kMaxLabelHeight;
return size.height + kTableCellVPadding*2;
}
Lösung
Die Ursache ist das folgende Codesegment:
if (indexPath.section == FIRST_SECTION) {
text = [_firstArray objectAtIndex:row];
} else if (indexPath.section == SECOND_SECTION) {
text = [_secondArray objectAtIndex:row];
} else {
NSLog(@"Wrong section");
}
In diesem Teil wird der Textvariablen kein Wert zugewiesen. Also bleibt es als Null. Also beschwert sich Xcode darüber, dass es null ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow