Yod*_*kul -2 xcode objective-c string-comparison nsstring
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mnuSelected"])
{
ViewController *v = segue.destinationViewController;
if(self.searchDisplayController.active) {
NSIndexPath *indexPath = nil;
indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
v.str = [self.result objectAtIndex:indexPath.row];
NSIndexPath *rowSelected = nil;
rowSelected = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
v.UserSelected = rowSelected.row; //error in this line
}
else {
NSIndexPath *indexPath = nil;
indexPath = [self.tableView indexPathForSelectedRow];
v.str = [self.monthName objectAtIndex:indexPath.row];
NSIndexPath *rowSelected = nil;
rowSelected = [self.tableView indexPathForSelectedRow];
v.UserSelected = rowSelected.row;
}
return; }
}
Run Code Online (Sandbox Code Playgroud)
我在这一行有错误:v.UserSelected = rowSelected.row; 错误是:不允许将“ nsinteger”(又名“ long”)隐式转换为“ nsstring *”
尝试使用以下代码:
v.UserSelected = [NSString stringWithFormat:@"%ld",(long) rowSelected.row];
Run Code Online (Sandbox Code Playgroud)
注意:如果您尝试将值设置为:
v.UserSelected = [NSString stringWithFormat:@"%d",rowSelected.row];
您将得到编译器警告:
NSInteger类型的值不应用作格式参数。添加一个明确的强制转换为'long'
如果在OS X(64位)上进行编译,则会收到此警告,因为在该平台上,NSInteger被定义为long,并且是64位整数。另一方面,%d格式用于int,即32位。因此,格式和实际参数的大小不匹配。
由于NSInteger是32位或64位的,因此取决于平台,编译器建议一般将long强制转换。
| 归档时间: |
|
| 查看次数: |
3927 次 |
| 最近记录: |