无法删除核心数据数据库的所有当前元素



我正在尝试删除核心数据数据库中的所有数据,但它会引发错误,并且根本不影响SQLite数据库。

if self.userCredentials.count > 0 {
        for loopIndex in 0 ... self.userCredentials.count - 1 {
                self.context.delete(self.userCredentials[loopIndex])
                self.userCredentials.remove(at: loopIndex)
        }
        self.saveLogin()
}
func saveLogin() {
        do {
            try context.save()
            print ("Context saved successfully")
        }
        catch {
            print ("Error saving items (error)")
        }
    }

致命错误:索引超出范围

将您的代码更改为:

for userCredential in userCredentials {
    context.delete(userCredential)
}
saveLogin()

您的代码问题是您循环可变用户限制所包含的元素的次数。这是一个不变的值,它甚至不会在循环一次之前初始化。

您正在基于索引访问数组的索引。这不是错的,但是在简单的for-in(请参见上面的代码(的情况下不应该这样做。

之后,您通过删除元素来操纵元素计数。这不会影响我上面说的不变元素计数。因此,很快或以后您会出于异常而获得索引。您应该尝试搜索确切的内容,尝试访问不存在的列表中的元素。

最新更新