Swift 无法分配类型为';indexath';输入';Int';

Swift 无法分配类型为';indexath';输入';Int';,swift,Swift,我想知道如何声明IndexPath类型的变量。如果有人能告诉我如何使用内联条件,这也会非常有帮助 var indexPath = 0 if PlaylistController.shared.playlists.count == 1 { indexPath = IndexPath(item: sender.tag +1, section: 0) } else { indexPath = IndexPath(item: sender.tag -1, section: 0) }

我想知道如何声明IndexPath类型的变量。如果有人能告诉我如何使用内联条件,这也会非常有帮助

var indexPath = 0
if  PlaylistController.shared.playlists.count == 1 {
    indexPath = IndexPath(item: sender.tag +1, section: 0)
}
else {
    indexPath = IndexPath(item: sender.tag -1, section: 0)
}
或者,我认为:

let item = PlaylistController.shared.playlists.count == 1 ? sender.tag+1 :sender.tag-1
let indexPath = IndexPath(item:item, section:0)
或者,我认为:

let item = PlaylistController.shared.playlists.count == 1 ? sender.tag+1 :sender.tag-1
let indexPath = IndexPath(item:item, section:0)

只需更改行:

var indexPath = 0
致:

或者将整个事件替换为:

let indexPath = IndexPath(item: sender.tag + (PlaylistController.shared.playlists.count == 1 ? 1 : -1), section: 0)

只需更改行:

var indexPath = 0
致:

或者将整个事件替换为:

let indexPath = IndexPath(item: sender.tag + (PlaylistController.shared.playlists.count == 1 ? 1 : -1), section: 0)

只需将变量的类型指定为
indepath
,因为这是您需要存储的类型(您不想保存数字)


只需将变量的类型指定为
indepath
,因为这是您需要存储的类型(您不想保存数字)


我先尝试了一下,但我得到了“类型名后应该有成员名或构造函数调用”。它似乎与var indexath=indexath一起工作。self@twix使用冒号
不相等符号
=
我先尝试了,但得到了“类型名称后的预期成员名称或构造函数调用”。它似乎与var indexath=indexath一起工作。self@twix使用冒号
不等于符号
=
这在您的答案中是隐式的,但可能值得明确提及:
indepath
可以声明为常量,如果它只初始化一次(在每个可能的代码路径上)。@MartinR这是一个很好的观点。我在回答的第一个选项中选择了
let
,因为OP的剩余代码将在
if/else
中给出
indexPath
一个值。但我可能应该解释为什么
let
在这种情况下是有效的。这在您的答案中是隐含的,但可能值得明确提及:
indepath
可以声明为常量,如果它只初始化一次(在每个可能的代码路径上)。@MartinR这是一个很好的观点。我在回答的第一个选项中选择了
let
,因为OP的剩余代码将在
if/else
中给出
indexPath
一个值。但我可能应该解释一下为什么
let
在这种情况下是有效的。我有一行:ObjectsController.shared.playlists[indexPath.item]是否可以用类似[$0]的东西替换[indexPath.item],所有可能的值?我有一行:ObjectsController.shared.playlists[indexPath.item]是否可以替换[indexPath.item]使用类似[$0]的值,所有可能的值?