Ios 该类不符合密钥的键值编码(我在序列图像板中更改了文件名)
编辑-这不是重复的。即使所有的连接都正确,我仍然得到这个错误。显然,纠正此问题的行动也需要按特定顺序完成。请参阅标记为答案的响应 我改变了故事板中的一个文件名,所有东西都坏了。我得到的错误是“这个类不是键值编码兼容的关键”,但我不认为这是真正的问题。我有一个名为Draft的viewcontroller和另一个名为Draft2的viewcontroller。在我的故事板上,我将文件名从Draft更改为Draft3,然后将Draft2更改为Draft。我分别更改了类的名称,然后删除了序列并重新创建它们。我还分别更改了视图控制器标题和情节提要Id。我真的不在乎Draft3,因为它最终会被删除,但我需要Draft(新版本)才能工作 我已重新连接名为Draft的新Viewcontroller的所有插座。我还尝试过清理程序(cmd+shift+k)。我已尝试保存和关闭 这是怎么回事 这是我的草稿viewController的一部分Ios 该类不符合密钥的键值编码(我在序列图像板中更改了文件名),ios,swift,segue,filenames,Ios,Swift,Segue,Filenames,编辑-这不是重复的。即使所有的连接都正确,我仍然得到这个错误。显然,纠正此问题的行动也需要按特定顺序完成。请参阅标记为答案的响应 我改变了故事板中的一个文件名,所有东西都坏了。我得到的错误是“这个类不是键值编码兼容的关键”,但我不认为这是真正的问题。我有一个名为Draft的viewcontroller和另一个名为Draft2的viewcontroller。在我的故事板上,我将文件名从Draft更改为Draft3,然后将Draft2更改为Draft。我分别更改了类的名称,然后删除了序列并重新创建它
class Draft: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UISearchBarDelegate {
@IBOutlet weak var battlegroundName: UILabel!
@IBOutlet weak var draftStatus: UILabel!
@IBOutlet weak var draftNotes: UILabel!
@IBOutlet weak var collectionHeroPool: UICollectionView!
@IBOutlet weak var collectionTeam1Bans: UICollectionView!
@IBOutlet weak var collectionTeam2Bans: UICollectionView!
@IBOutlet weak var collectionTeam1Picks: UICollectionView!
@IBOutlet weak var collectionTeam2Picks: UICollectionView!
@IBAction func undoButton(sender: AnyObject) {
self.navigationController?.popViewControllerAnimated(true)
self.navigationController?.navigationBarHidden = false
//dismissViewControllerAnimated(false, completion: nil)
}
var team1First = true
var battleground: Battleground!
var team1 = [Hero]()
var team2 = [Hero]()
var turn = 1
var team1Active = true
var activeTeam = [Hero]()
var team1Bans = [Int: Hero]()
var team2Bans = [Int: Hero]()
var team1Picks = [Int: Hero]()
var team2Picks = [Int: Hero]()
var bans1 = [1,9]
var bans2 = [2,8]
var picks1 = [3, 6, 7, 12, 13]
var picks2 = [4, 5, 10, 11, 14]
var pickedHeroes = [Hero]()
override func viewDidLoad() {
super.viewDidLoad()
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
self.navigationController?.navigationBarHidden = true
battlegroundName.text = battleground.name
这段代码在我的预起草中,将继续起草
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "preDraftToDraft3" {// if this is the segue being loaded with this identifier
if let detailsVC = segue.destinationViewController as? Draft3 { // grab the view control we will go to and cast it as the hero detail class
detailsVC.team1First = team1First!
//print(selectedMap!.name)
detailsVC.battleground = selectedMap
//print(detailsVC.battleground.name)
}
}
if segue.identifier == "preDraftToDraft" {// if this is the segue being loaded with this identifier
if let detailsVC = segue.destinationViewController as? Draft { // grab the view control we will go to and cast it as the hero detail class
detailsVC.team1First = team1First!
//print(selectedMap!.name)
detailsVC.battleground = selectedMap
//print(detailsVC.battleground.name)
}
}
}
@IBAction func startDraft(sender: AnyObject) {
if team1First != nil && selectedMap != nil {
performSegueWithIdentifier("preDraftToDraft", sender: nil)
}
}
问题是故事板中的一个出口在类本身中找不到。 检查您的类是否具有与脚本视图控制器的“引用出口”部分中相同的名称的IBOutlet 例如: 如果有“按钮”,则视图控制器中必须有此行:
@IBOutlet weak var button: UIButton!
实际上,你做了所有正确的事情,但顺序不对。 您需要遵循以下步骤:-
干杯 谢谢,这是有效的,我从来没有想到有一个“必要的”订单。