Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 我的For循环中的计数没有增加_Ios_Macos_Swift_Eventkit - Fatal编程技术网

Ios 我的For循环中的计数没有增加

Ios 我的For循环中的计数没有增加,ios,macos,swift,eventkit,Ios,Macos,Swift,Eventkit,当运行我的代码时,我会在控制台上打印一些1,而不是1,2,3,4,5 如果能帮我解释一下为什么会发生这样的事情,那就太好了,我很难弄明白 我们的想法是循环浏览日历名称,直到找到“旅行”日历 func checkCalendarExists(){ var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar] for i in eventCalendars {

当运行我的代码时,我会在控制台上打印一些1,而不是1,2,3,4,5

如果能帮我解释一下为什么会发生这样的事情,那就太好了,我很难弄明白

我们的想法是循环浏览日历名称,直到找到“旅行”日历

func checkCalendarExists(){
    var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar]

    for i in eventCalendars {

        var count = 0
        var calendarCount = eventCalendars.count

        if i.title != "Travel" && count != calendarCount
        {
            ++count
            println(count)
        }

        else if i.title == "Travel"
        {
            // do something
        }
        else
        {
           aMethod()
        }

    }
}

您的count变量没有递增,因为它在循环中声明,并在每次迭代开始时初始化为零。要使代码按预期工作,您必须将
var count=0
移到For循环外部。

您的count变量不会增加,因为它在循环内部声明,并在每次迭代开始时初始化为零。要使代码按预期工作,您必须将
var count=0
移到For循环外部。

您的count变量不会增加,因为它在循环内部声明,并在每次迭代开始时初始化为零。要使代码按预期工作,您必须将
var count=0
移到For循环外部。

您的count变量不会增加,因为它在循环内部声明,并在每次迭代开始时初始化为零。要使代码按预期工作,您必须将
var count=0
移到For循环之外。

您的
count
变量确实会增加,但每次
For循环运行其序列时,它都会重置为零

总是建议在循环外声明和分配递增变量

请将代码更改为(我正在循环前初始化
var count=0


您的
count
变量确实会增加,但每次
for循环运行其序列时,它都会重置为零

总是建议在循环外声明和分配递增变量

请将代码更改为(我正在循环前初始化
var count=0


您的
count
变量确实会增加,但每次
for循环运行其序列时,它都会重置为零

总是建议在循环外声明和分配递增变量

请将代码更改为(我正在循环前初始化
var count=0


您的
count
变量确实会增加,但每次
for循环运行其序列时,它都会重置为零

总是建议在循环外声明和分配递增变量

请将代码更改为(我正在循环前初始化
var count=0


ALXGTV的回答解释了为什么你会有这种意想不到的行为

您的代码可以进行优化-我建议使用
enumerate
函数,而不是手动处理计数器变量,该函数在每次迭代时返回
(索引,值)

for (index, calendar) in enumerate(eventCalendars) {
    ...
}
此外,该变量:

var calendarCount = eventCalendars.count
在每次迭代时填充,始终使用相同的值。如果将其移动到循环之前,使其不可变,则效率会更高:

let calendarCount = eventCalendars.count
for (index, calendar) in enumerate(eventCalendars) {
    ...
}
最后,我更喜欢使用未找到条件的标志,在循环之外处理它:

func checkCalendarExists() {
    var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar]    
    var found = false
    let calendarCount = eventCalendars.count
    for (index, calendar) in enumerate(eventCalendars) {
        if calendar.title == "Travel" {
            // do something
            found = true
            break // This stops the loop
        } else {
            println(index + 1)
        }
    }

    if !found {
        aMethod()
    }
}

ALXGTV的回答解释了为什么你会有这种意想不到的行为

您的代码可以进行优化-我建议使用
enumerate
函数,而不是手动处理计数器变量,该函数在每次迭代时返回
(索引,值)

for (index, calendar) in enumerate(eventCalendars) {
    ...
}
此外,该变量:

var calendarCount = eventCalendars.count
在每次迭代时填充,始终使用相同的值。如果将其移动到循环之前,使其不可变,则效率会更高:

let calendarCount = eventCalendars.count
for (index, calendar) in enumerate(eventCalendars) {
    ...
}
最后,我更喜欢使用未找到条件的标志,在循环之外处理它:

func checkCalendarExists() {
    var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar]    
    var found = false
    let calendarCount = eventCalendars.count
    for (index, calendar) in enumerate(eventCalendars) {
        if calendar.title == "Travel" {
            // do something
            found = true
            break // This stops the loop
        } else {
            println(index + 1)
        }
    }

    if !found {
        aMethod()
    }
}

ALXGTV的回答解释了为什么你会有这种意想不到的行为

您的代码可以进行优化-我建议使用
enumerate
函数,而不是手动处理计数器变量,该函数在每次迭代时返回
(索引,值)

for (index, calendar) in enumerate(eventCalendars) {
    ...
}
此外,该变量:

var calendarCount = eventCalendars.count
在每次迭代时填充,始终使用相同的值。如果将其移动到循环之前,使其不可变,则效率会更高:

let calendarCount = eventCalendars.count
for (index, calendar) in enumerate(eventCalendars) {
    ...
}
最后,我更喜欢使用未找到条件的标志,在循环之外处理它:

func checkCalendarExists() {
    var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar]    
    var found = false
    let calendarCount = eventCalendars.count
    for (index, calendar) in enumerate(eventCalendars) {
        if calendar.title == "Travel" {
            // do something
            found = true
            break // This stops the loop
        } else {
            println(index + 1)
        }
    }

    if !found {
        aMethod()
    }
}

ALXGTV的回答解释了为什么你会有这种意想不到的行为

您的代码可以进行优化-我建议使用
enumerate
函数,而不是手动处理计数器变量,该函数在每次迭代时返回
(索引,值)

for (index, calendar) in enumerate(eventCalendars) {
    ...
}
此外,该变量:

var calendarCount = eventCalendars.count
在每次迭代时填充,始终使用相同的值。如果将其移动到循环之前,使其不可变,则效率会更高:

let calendarCount = eventCalendars.count
for (index, calendar) in enumerate(eventCalendars) {
    ...
}
最后,我更喜欢使用未找到条件的标志,在循环之外处理它:

func checkCalendarExists() {
    var eventCalendars = store.calendarsForEntityType(EKEntityTypeEvent) as [EKCalendar]    
    var found = false
    let calendarCount = eventCalendars.count
    for (index, calendar) in enumerate(eventCalendars) {
        if calendar.title == "Travel" {
            // do something
            found = true
            break // This stops the loop
        } else {
            println(index + 1)
        }
    }

    if !found {
        aMethod()
    }
}

谢谢你,这么明显的尴尬表情。对不起,我不能投赞成票,我没有足够的票rep@Yelims01你不必感到尴尬或抱歉。下次试着通过你的代码和谷歌步骤进行推理。我希望你能帮助其他新手。谢谢你,这么明显的尴尬表情。对不起,我不能投赞成票,我没有足够的票rep@Yelims01你不必感到尴尬或抱歉。下次试着通过你的代码和谷歌步骤进行推理。我希望你能帮助其他新手。谢谢你,这么明显的尴尬表情。对不起,我不能投赞成票,我没有足够的票rep@Yelims01你不必感到尴尬或抱歉。下次试着通过你的代码和谷歌步骤进行推理。我希望你能帮助其他新手。谢谢你,这么明显的尴尬表情。对不起,我不能投赞成票,我没有足够的票rep@Yelims01你不必感到尴尬或抱歉。下次试着通过你的代码和谷歌步骤进行推理。我希望你能帮助其他新手。