После внесения этих изменений мой код работал отлично.

я новичок в iOS и использую онлайн-учебники для изучения платформы. Учебники, которые я использую, строят приложения с iOS 9, в то время как я использую iOS 10. Из-за этого я столкнулся с проблемой названия. Вот некоторый код:

CalendarEvent.swift

class CalendarEvent : NSObject {
var title : String
var dateString : String

init(withTitle t : String, andDateString ds : String) {
    title = t
    dateString = ds
}

init(withCoder coder : NSCoder) {
    dateString = coder.decodeObject(forKey: "dateString") as! String
    title = coder.decodeObject(forKey: "title") as! String
}

func encodeWithCoder(coder : NSCoder) {
    coder.encode(dateString, forKey: "dateString")
    coder.encode(title, forKey: "title")
}

}

Следующий фрагмент взят из другого класса, где проявляется ошибка:

SingleDayTableViewController.swift

@IBAction func addButtonPressed(sender : UIBarButtonItem) {
    let newEvent = "Test Event \(events.count + 1)"

    let defaultsKey = "\(monthNumber) - \(dayNumber)"
    let ce = CalendarEvent(withTitle: newEvent, andDateString: defaultsKey)

    let encodedCE = NSKeyedArchiver.archivedData(withRootObject: ce) // This line breaks the program.
    events.append(encodedCE as AnyObject)

    UserDefaults.standard.set(events, forKey: defaultsKey)
    UserDefaults.standard.synchronize()

    tableView.reloadData()
}

Я не уверен, почему это происходит, но, надеюсь, кто-то здесь сможет кое-что прояснить для меня. Я включу трассировку стека ниже.

2017-02-08 13:57:49.026 myCalendar[80042:1651988] -[myCalendar.CalendarEvent encodeWithCoder:]: unrecognized selector sent to instance 0x600000073440
2017-02-08 13:57:49.059 myCalendar[80042:1651988] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[myCalendar.CalendarEvent encodeWithCoder:]: unrecognized selector sent to instance 0x600000073440'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001104b6d4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010ff1821e objc_exception_throw + 48
    2   CoreFoundation                      0x0000000110526f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x000000011043c005 ___forwarding___ + 1013
    4   CoreFoundation                      0x000000011043bb88 _CF_forwarding_prep_0 + 120
    5   Foundation                          0x000000010fa4fcac _encodeObject + 1263
    6   Foundation                          0x000000010fa84a22 +[NSKeyedArchiver archivedDataWithRootObject:] + 156
    7   myCalendar                          0x000000010f923504 _TFC10myCalendar28SingleDayTableViewController16addButtonPressedfT6senderCSo15UIBarButtonItem_T_ + 980
    8   myCalendar                          0x000000010f9239aa _TToFC10myCalendar28SingleDayTableViewController16addButtonPressedfT6senderCSo15UIBarButtonItem_T_ + 58
    9   UIKit                               0x00000001108dc8bc -[UIApplication sendAction:to:from:forEvent:] + 83
    10  UIKit                               0x0000000110d1e4a1 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 149
    11  UIKit                               0x00000001108dc8bc -[UIApplication sendAction:to:from:forEvent:] + 83
    12  UIKit                               0x0000000110a62c38 -[UIControl sendAction:to:forEvent:] + 67
    13  UIKit                               0x0000000110a62f51 -[UIControl _sendActionsForEvents:withEvent:] + 444
    14  UIKit                               0x0000000110a630db -[UIControl _sendActionsForEvents:withEvent:] + 838
    15  UIKit                               0x0000000110a61e4d -[UIControl touchesEnded:withEvent:] + 668
    16  UIKit                               0x000000011094a545 -[UIWindow _sendTouchesForEvent:] + 2747
    17  UIKit                               0x000000011094bc33 -[UIWindow sendEvent:] + 4011
    18  UIKit                               0x00000001108f89ab -[UIApplication sendEvent:] + 371
    19  UIKit                               0x00000001219f2481 -[UIApplicationAccessibility sendEvent:] + 93
    20  UIKit                               0x00000001110e572d __dispatchPreprocessedEventFromEventQueue + 3248
    21  UIKit                               0x00000001110de463 __handleEventQueue + 4879
    22  CoreFoundation                      0x000000011045b761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    23  CoreFoundation                      0x000000011044098c __CFRunLoopDoSources0 + 556
    24  CoreFoundation                      0x000000011043fe76 __CFRunLoopRun + 918
    25  CoreFoundation                      0x000000011043f884 CFRunLoopRunSpecific + 420
    26  GraphicsServices                    0x0000000114b45a6f GSEventRunModal + 161
    27  UIKit                               0x00000001108dac68 UIApplicationMain + 159
    28  myCalendar                          0x000000010f924caf main + 111
    29  libdyld.dylib                       0x0000000113bb568d start + 1
    30  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Ответы на вопрос(1)

Ваш ответ на вопрос