Я получаю сообщение об ошибке «нераспознанный селектор отправлен в экземпляр» в этой строке:
newAlarm.note = note
внутри моего метода Alarm.swift newAlarm()
.Вот этот метод:
static func newAlarm(context: NSManagedObjectContext, alarmNumber: Int, timeIntervals: TimeIntervals, note: String, recurrence: RecurrenceOptions) -> Alarm? {
let startInterval = Alarm.convertToTimeDouble(hour: timeIntervals.hourStartInterval, minute: timeIntervals.minuteStartInterval)
let endInterval = Alarm.convertToTimeDouble(hour: timeIntervals.hourEndInterval, minute: timeIntervals.minuteEndInterval)
if endInterval < startInterval {
os_log("Error: Alarm time endInterval is before startInterval", log: OSLog.default, type: .info)
return nil
}
let newAlarm = Alarm(context: context)
newAlarm.alarmNumber = alarmNumber
newAlarm.note = note
newAlarm.recurrence = recurrence
newAlarm.notificationUuids = [String]()
newAlarm.startTimeInterval = startInterval
newAlarm.endTimeInterval = endInterval
newAlarm.setNewRandomAlarmTime()
return newAlarm
}
Как видите, примечание передается и не является необязательным значением.Вот как я объявляю класс Alarm:
class Alarm: NSManagedObject {
@NSManaged var alarmTime: Double
@NSManaged var alarmNumber: Int
@NSManaged var startTimeInterval: Double
@NSManaged var endTimeInterval: Double
@NSManaged var note: String
@NSManaged var notificationUuids: [String]
@NSManaged var recurrenceIndex: Int
let NUMBER_OF_ALLOWED_NOTIFICATIONS_CREATED_AT_ONE_TIME = 10
}
Так что поле note
также не является обязательным.Я предполагаю, что эта ошибка связана с тем, что поле примечания пустое, и это не так, но я не могу найти в Интернете, почему это будет проблемой.В AddAlarmViewController, непосредственно перед вызовом Alarm.newAlarm()
, у меня есть это:
guard let noteText = self.noteTextField.text else {
os_log("Couldn't unwrap noteText in prepare(for:sender:) in AddAlarmViewController", log: OSLog.default, type: .default)
return
}
Здесь нет сбоя;Охранное заявление проходит без сбоев.Что говорит мне, что переменная noteText
не может быть nil, верно?Так почему я получаю сообщение об ошибке при установке этого поля?Я не получаю эту ошибку при назначении alarmNumber
, поэтому не могу себе представить, почему я получаю ее в свойстве note
.
Вот полная ошибка:
2018-12-16 20:02:06.592513-0500 RandomAlarm[8528:8134357] -[RandomAlarm.Alarm setNote:]: unrecognized selector sent to instance 0x6000025b0a00
2018-12-16 20:02:06.598032-0500 RandomAlarm[8528:8134357] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RandomAlarm.Alarm setNote:]: unrecognized selector sent to instance 0x6000025b0a00'
*** First throw call stack:
(
0 CoreFoundation 0x0000000106a591bb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x00000001046f6735 objc_exception_throw + 48
2 CoreFoundation 0x0000000106a77f44 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000106a5ded6 ___forwarding___ + 1446
4 CoreFoundation 0x0000000106a5fda8 _CF_forwarding_prep_0 + 120
5 RandomAlarm 0x0000000103d85341 $S11RandomAlarm0B0C03newB07context11alarmNumber13timeIntervals4note10recurrenceACSgSo22NSManagedObjectContextC_SiAA04TimeH0CSSAA17RecurrenceOptionsOtFZ + 721
6 RandomAlarm 0x0000000103d7ede1 $S11RandomAlarm03AddB14ViewControllerC7prepare3for6senderySo17UIStoryboardSegueC_ypSgtF + 6209
7 RandomAlarm 0x0000000103d7f3fa $S11RandomAlarm03AddB14ViewControllerC7prepare3for6senderySo17UIStoryboardSegueC_ypSgtFTo + 218
8 UIKitCore 0x000000010934cb24 -[UIStoryboardUnwindSegueTemplate _performWithDestinationViewController:sender:] + 186
9 UIKitCore 0x000000010934ca37 -[UIStoryboardUnwindSegueTemplate _perform:] + 83
10 UIKitCore 0x000000010934a97b -[UIStoryboardSegueTemplate perform:] + 157
11 UIKitCore 0x00000001091a9ecb -[UIApplication sendAction:to:from:forEvent:] + 83
12 UIKitCore 0x00000001088ea95b __45-[_UIButtonBarTargetAction _invoke:forEvent:]_block_invoke + 154
13 UIKitCore 0x00000001088ea894 -[_UIButtonBarTargetAction _invoke:forEvent:] + 152
14 UIKitCore 0x00000001091a9ecb -[UIApplication sendAction:to:from:forEvent:] + 83
15 UIKitCore 0x0000000108be50bd -[UIControl sendAction:to:forEvent:] + 67
16 UIKitCore 0x0000000108be53da -[UIControl _sendActionsForEvents:withEvent:] + 450
17 UIKitCore 0x0000000108be431e -[UIControl touchesEnded:withEvent:] + 583
18 UIKitCore 0x00000001091e50a4 -[UIWindow _sendTouchesForEvent:] + 2729
19 UIKitCore 0x00000001091e67a0 -[UIWindow sendEvent:] + 4080
20 UIKitCore 0x00000001091c4394 -[UIApplication sendEvent:] + 352
21 UIKitCore 0x00000001092995a9 __dispatchPreprocessedEventFromEventQueue + 3054
22 UIKitCore 0x000000010929c1cb __handleEventQueueInternal + 5948
23 CoreFoundation 0x00000001069be721 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
24 CoreFoundation 0x00000001069bdf93 __CFRunLoopDoSources0 + 243
25 CoreFoundation 0x00000001069b863f __CFRunLoopRun + 1263
26 CoreFoundation 0x00000001069b7e11 CFRunLoopRunSpecific + 625
27 GraphicsServices 0x000000010e9151dd GSEventRunModal + 62
28 UIKitCore 0x00000001091a881d UIApplicationMain + 140
29 RandomAlarm 0x0000000103d82587 main + 71
30 libdyld.dylib 0x0000000107c97575 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException