致命错误:注册后索引超出范围(Firebase、Swift)
Posted
技术标签:
【中文标题】致命错误:注册后索引超出范围(Firebase、Swift)【英文标题】:Fatal error: Index out of range after Sign Up (Firebase, Swift) 【发布时间】:2018-03-18 16:12:40 【问题描述】:我正在尝试学习如何使用 Firebase,但在我的项目中包含 Firebase 后,我遇到了数组问题(没有注册 + 登录功能,我的代码可以正常工作)。
我有一个class New
,其结构如下:
class New
struct collectViewStruct
var image = [UIImage]()
var collectImageArray = [
collectionViewStruct(image: [UIImage(named:"maskarad.jpg")!, UIImage(named:"2.jpg")!]),
collectionViewStruct(image: [UIImage(named:"3.jpg")!, UIImage(named:"4.jpg")!]),
collectionViewStruct(image: [UIImage(named:"5.jpg")!, UIImage(named:"6.jpg")!])
]
var anImageArray = [
collectionViewStruct(image: [UIImage(named:"1.jpg")!, UIImage(named:"2.jpg")!, UIImage(named:"3.jpg")!, UIImage(named:"4.jpg")!, UIImage(named:"5.jpg")!]),
collectionViewStruct(image: [UIImage(named:"3.jpg")!, UIImage(named:"4.jpg")!]),
collectionViewStruct(image: [UIImage(named:"5.jpg")!, UIImage(named:"6.jpg")!])
]
var detImageArray = [
collectionViewStruct(image: [UIImage(named:"1.jpg")!, UIImage(named:"2.jpg")!]),
collectionViewStruct(image: [UIImage(named:"3.jpg")!, UIImage(named:"4.jpg")!]),
collectionViewStruct(image: [UIImage(named:"5.jpg")!, UIImage(named:"6.jpg")!])
]
struct nVoiceStruct
var nVoice = [Int]()
var vlVoiceArray = [
nVoiceStruct(nVoice: [0, 1])
]
我有一个CollectionViewController
,我正在尝试将来自CollectionViewController
视图的数据连接到我的下一个MediaViewController
import UIKit
var aArray = [UIImage]()
var dArray = [UIImage]()
var vArray = [Int]()
class CollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
var cats : New = New()
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
selectedRow = indexPath.row
let selectedItemInCategoryArray = cats.anImageArray[selectedRow]
aArray = selectedItemInCategoryArray.image
let selectetItemVoice = cats.vlVoiceArray[selectedRow]
vArray = selectetItemVoice.nVoice
let selectedItemInArray = cats.collectImageArray[selectedRow]
dArray = [selectedItemInArray.image[selectedRow]
但在我的第三个 MediaViewController 中,我有一个空数组
aArray[4] = dArray[0]
Thread 1: Fatal error: Index out of range
没有 Firebase 一切正常,但登录后,我有一个空数组。不知道哪里出了问题。我想可能是因为我的变量在类之外,但是当我在类内初始化它们时,它没有帮助。如果有人能解释它,我将不胜感激(我的类和变量的名称只是草稿)。
这是日志消息:
2018-03-18 23:03:18.242863+0300 Newapp [Firebase/Analytics] Firebase Analytics started
2018-03-18 23:03:18.243474+0300 Newapp [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...)
2018-03-18 23:03:18.677132+0300 Newapp TIC Read Status [1:0x0]: 1:57
2018-03-18 23:03:18.680586+0300 Newapp TIC Read Status [1:0x0]: 1:57
2018-03-18 23:03:18.938133+0300 Newapp[MC] System group container for systemgroup.com.apple.configurationprofiles path is (here is path)
2018-03-18 23:03:18.941294+0300 Newapp[56497:1489902] [MC] Reading from private effective user settings.
【问题讨论】:
看起来您正在将aArray
设置为在您的didSelectItemAt
函数中有一个值。我也想知道你如何从你的 collectionView 转到 MediaViewController?那个代码在哪里?
@Jake 我从collectionView 到MediaViewController
到didSelectItemAt
和segue
没有代码(使用故事板),我有收集视图(宠物类别),在下一个MediaViewController
我我正在尝试将数组的一个元素替换为另一个,但是在我包含 Firebase 之后,所有数组 (aArray, vArray, dArray
) 都是空的。当我删除 FirebaseAuth 代码时,所有其他代码都会再次运行
@Jake 这是我的文件link
将此代码添加到您的 MediaViewController viewDidLoad 并注释掉您拥有的所有其他内容 if let testArray = aArray print(aArray) else print("aArray is nil")
让我知道打印的内容
@Jake 它不打印任何东西,控制台是空的,只有 lldb 和 Fatal error: Index out of range
。当我从环境变量中删除 OS_ACTIVITY_MODE
时,我在控制台 Reading from private effective user settings
上收到了这条消息
【参考方案1】:
我尝试了这些步骤:
-
转到我的
Main.storyboard
选择我的MediaViewController
-> Editor
-> Embeded in Navigation Controller
它解决了问题
【讨论】:
以上是关于致命错误:注册后索引超出范围(Firebase、Swift)的主要内容,如果未能解决你的问题,请参考以下文章