简体   繁体   English

“无法识别的选择器发送到实例”在不寻常的地方,使用 CoreData @NSManaged 子类

[英]"Unrecognized selector sent to instance" in unusual place, using a CoreData @NSManaged subclass

I'm trying to figure out why I'm getting this error "Unrecognized selector sent to instance" in the following scenario.我试图弄清楚为什么我会在以下场景中收到此错误“无法识别的选择器发送到实例”。 In my Game class, I have the following:在我的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

    }

}

In my ConferenceResultsTableViewController, I call loadGames() in my viewDidLoad() method.在我的 ConferenceResultsTableViewController 中,我在 viewDidLoad() 方法中调用了 loadGames()。 loadGames is this: 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])
        ]

    }

Conferences are a reference to which conferences the games belong to.会议是指游戏所属的会议。 Games belong to a conference if one of the participating teams is in that conference, so it's possible to have 1 or 2 conferences for each game.如果其中一支参赛球队在该会议中,则游戏属于该会议,因此每场比赛可能有 1 或 2 个会议。 The commented out line above in Game 's newGame() method was my first attempt at changing the input value from an array of Conference s to an array of String s.上面Game的 newGame() 方法中注释掉的行是我第一次尝试将输入值从Conference数组更改为String数组。 I started getting this error so I tried to do it manually with a for loop, but the error didn't go away.我开始收到此错误,因此我尝试使用for循环手动执行此操作,但错误并未消失。 Here's the full logged error:这是完整记录的错误:

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
)

I'm not sure where to go from here.我不知道从这里去哪里。 It's got something to do with setConferences it looks like, but I don't have any method or selector with that name in my code, so I think it's got to be some attempt to set the conferences to the @NSManaged variable in Game.它看起来与setConferences ,但我的代码中没有任何具有该名称的方法或选择器,因此我认为必须尝试将会议设置为 Game 中的 @NSManaged 变量。 I can't see how I'm doing it wrong though.我看不出我是怎么做错的。

Figured out my error.找出我的错误。 I had recently changed the attribute conference to conferences in my Game class, but forgot to change it in my data model in XCode.我最近在我的Game类中将属性conference更改为conferences ,但忘记在 XCode 的数据模型中更改它。 For some reason, this didn't give a compiler error.出于某种原因,这并没有给出编译器错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CoreData 无法识别的选择器发送到实例 - CoreData Unrecognized Selector Sent to Instance swift coredata-无法识别的选择器发送到实例 - swift coredata - unrecognized selector sent to instance CoreData 中的“-[页面比较:] 无法识别的选择器发送到实例” - '-[Page compare:] unrecognized selector sent to instance' in CoreData 无法识别的选择器通过Coredata Swift发送到实例 - unrecognized selector sent to instance with Coredata Swift NSManagedObject 子类 - 无法识别的选择器发送到实例 - NSManagedObject subclass - unrecognized selector sent to instance NSURLRequest错误:“ [CoreData长度]:无法识别的选择器已发送到实例” - NSURLRequest Error: “[CoreData length]: unrecognized selector sent to instance” Restkit / CoreData __NSCF布尔长度无法识别的选择器发送到实例 - Restkit / CoreData __NSCFBoolean length unrecognized selector sent to instance CoreData问题: - [NSManagedObject setValue:]:发送到实例的无法识别的选择器 - CoreData issue: -[NSManagedObject setValue:]: unrecognized selector sent to instance PFObject子类,无法识别的选择器发送到自定义方法的实例 - PFObject subclass, unrecognized selector sent to instance for custom method 无法识别的选择器发送到实例 - unrecognized selector sent to instance
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM