gpt4 book ai didi

ios - "Unrecognized selector sent to instance"在不寻常的地方,使用 CoreData @NSManaged 子类

转载 作者:行者123 更新时间:2023-11-28 05:40:27 26 4
gpt4 key购买 nike

我试图弄清楚为什么在以下情况下会收到此错误“无法识别的选择器已发送到实例”。在我的 Game 类中,我有以下内容:

import Foundation
import CoreData

class Game: NSManagedObject {

@NSManaged var contestants: [String]
@NSManaged var winner: String
@NSManaged var confidence: Int
@NSManaged var conferences: [String]

}

extension Game {

public static func newGame(context: NSManagedObjectContext, contestants: [String]?, winner: String?, confidence: Int?, conferences: [Conference]?) -> Game {

let newGame = Game(context: context)

if let contestants = contestants {
newGame.contestants = contestants
} else {
newGame.contestants = ["", ""]
}
if let winner = winner {
newGame.winner = winner
} else {
newGame.winner = ""
}
if let confidence = confidence {
newGame.confidence = confidence
} else {
newGame.confidence = 0
}
if let conferences = conferences {
var conferencesStrArray = [String]()
for conference in conferences {
conferencesStrArray.append(Conference.getStringValue(conference: conference))
}
newGame.conferences = conferencesStrArray
// newGame.conferences = conferences.map({ Conference.getStringValue(conference: $0) })
} else {
newGame.conferences = ["CAA"]
}

return newGame

}

}

在我的 ConferenceResultsTableViewController 中,我在 viewDidLoad() 方法中调用了 loadGames()。 loadGames 是这样的:

private func loadGames() {

os_log("loadGames() called", log: OSLog.default, type: .debug)
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
self.allGames = [
Game.newGame(context: managedContext, contestants: ["Elon", "JMU"], winner: "Elon", confidence: 55, conferences: [.caa]),
Game.newGame(context: managedContext, contestants: ["Elon", "Wake Forest"], winner: "Wake Forest", confidence: 65, conferences: [.caa]),
Game.newGame(context: managedContext, contestants: ["Elon", "The Citadel"], winner: "Elon", confidence: 60, conferences: [.caa, .southern])
]

}

session 是游戏所属 session 的引用。如果其中一支参赛队伍在那个 session 中,则游戏属于 session ,因此每场比赛可能有 1 或 2 个 session 。 Game 的 newGame() 方法中上面注释掉的行是我第一次尝试将输入值从 Conference 数组更改为 String 数组我开始收到此错误,因此我尝试使用 for 循环手动执行此操作,但错误并没有消失。这是完整记录的错误:

2019-07-08 19:43:55.147053-0400 FCS Mock Season Creator[55255:6599033] -[FCS_Mock_Season_Creator.Game setConferences:]: unrecognized selector sent to instance 0x6000028aabc0
2019-07-08 19:43:55.151696-0400 FCS Mock Season Creator[55255:6599033] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FCS_Mock_Season_Creator.Game setConferences:]: unrecognized selector sent to instance 0x6000028aabc0'
*** First throw call stack:
(
0 CoreFoundation 0x0000000108c856fb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x0000000106c9aac5 objc_exception_throw + 48
2 CoreFoundation 0x0000000108ca3ab4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000108c8a443 ___forwarding___ + 1443
4 CoreFoundation 0x0000000108c8c238 _CF_forwarding_prep_0 + 120
5 FCS Mock Season Creator 0x0000000106396bed $s23FCS_Mock_Season_Creator4GameC03newE07context11contestants6winner10confidence11conferencesACSo22NSManagedObjectContextC_SaySSGSgSSSgSiSgSayAA10ConferenceOGSgtFZ + 2013
6 FCS Mock Season Creator 0x000000010639b00d $s23FCS_Mock_Season_Creator36ConferenceResultsTableViewControllerC9loadGames33_D4BAFF1647E02D408B56C0798C167D1BLLyyF + 893
7 FCS Mock Season Creator 0x0000000106399c54 $s23FCS_Mock_Season_Creator36ConferenceResultsTableViewControllerC11viewDidLoadyyF + 132
8 FCS Mock Season Creator 0x0000000106399db4 $s23FCS_Mock_Season_Creator36ConferenceResultsTableViewControllerC11viewDidLoadyyFTo + 36
9 UIKitCore 0x000000010b01f43b -[UIViewController loadViewIfRequired] + 1183
10 UIKitCore 0x000000010b01f868 -[UIViewController view] + 27
11 UIKitCore 0x000000010af6e3d0 -[UINavigationController _startCustomTransition:] + 929
12 UIKitCore 0x000000010af8431a -[UINavigationController _startDeferredTransitionIfNeeded:] + 741
13 UIKitCore 0x000000010af856a7 -[UINavigationController __viewWillLayoutSubviews] + 150
14 UIKitCore 0x000000010af6638d -[UILayoutContainerView layoutSubviews] + 217
15 UIKitCore 0x000000010baef9c1 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1417
16 QuartzCore 0x000000010d060eae -[CALayer layoutSublayers] + 173
17 QuartzCore 0x000000010d065b88 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 396
18 QuartzCore 0x000000010d071ee4 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 72
19 QuartzCore 0x000000010cfe13aa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 328
20 QuartzCore 0x000000010d018584 _ZN2CA11Transaction6commitEv + 608
21 UIKitCore 0x000000010b6493a4 _afterCACommitHandler + 245
22 CoreFoundation 0x0000000108bec0f7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
23 CoreFoundation 0x0000000108be65be __CFRunLoopDoObservers + 430
24 CoreFoundation 0x0000000108be6c31 __CFRunLoopRun + 1505
25 CoreFoundation 0x0000000108be6302 CFRunLoopRunSpecific + 626
26 GraphicsServices 0x0000000110d7f2fe GSEventRunModal + 65
27 UIKitCore 0x000000010b621ba2 UIApplicationMain + 140
28 FCS Mock Season Creator 0x000000010639897b main + 75
29 libdyld.dylib 0x000000010a1a8541 start + 1
)

我不确定从这里到哪里去。它看起来与 setConferences 有关,但我的代码中没有任何方法或选择器具有该名称,所以我认为必须尝试将 session 设置为游戏中的@NSManaged 变量。不过,我看不出我做错了什么。

最佳答案

找出我的错误。我最近在我的 Game 类中将属性 conference 更改为 conferences,但忘记在 XCode 的数据模型中更改它。出于某种原因,这没有给出编译器错误。

关于ios - "Unrecognized selector sent to instance"在不寻常的地方,使用 CoreData @NSManaged 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56943797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com