Это мой первый вопрос на этом сайте. У меня проблема, которую я не могу исправить.
Я работаю над простым приложением для заметок с сегодняшним расширением. У меня не было проблем в Swift 2.2 и iOS 9. Проблема только появляется в Swift 2.3 и Swift 3 на iOS 10. У меня проблема в следующем:
Пользователь может написать заметку (сохраненную в UserDefaults), открыть Центр уведомлений и просмотреть свои заметки в TodayExtension.
У меня есть эти методы для сохранения заметок в UserDefaults и извлечения их из UserDefaults (я использую группы, поэтому в возможностях моего приложения и моего расширения все настроено правильно. Кроме того, мои объекты, конечно, требуют методов NSCoding):
open class NoteManager: NSObject {
private static let kKEY: String! = "Notes"
private static let kSUITENAME: String! = "Team.group.bundleIdentifier"
open static func saveNotes(_ notes: [Note]) {
let notesData = NSKeyedArchiver.archivedData(withRootObject: notes)
let defaults = UserDefaults(suiteName: kSUITENAME)!
defaults.set(notesData, forKey: kKEY)
defaults.synchronize()
}
open static func retrieveNotes() -> [Note] {
let notesFromDefault = UserDefaults(suiteName: kSUITENAME)!.object(forKey: kKEY)
var returnedNotes: [Note]! = [Note]()
if notesFromDefault != nil {
if let notesData: Data? = notesFromDefault as! Data! {
NSKeyedUnarchiver.setClass(Note.self, forClassName: "Application_Name.Note")
NSKeyedUnarchiver.setClass(Preference.self, forClassName: "Application_Name.Preferences")
let unarchivedNotes = NSKeyedUnarchiver.unarchiveObject(with: notesData!) as? [Note]
if let notes: [Note] = unarchivedNotes! as [Note]! {
returnedNotes = notes
}
}
}
return returnedNotes
}
}
В приложении iOS у меня НЕТ проблем. UserDefaults хорошо работает с этим кодом. Но когда я открываю TodayExtension, следующая строка (в retrieveNotes()) всегда возвращает nil :
let notesFromDefault = UserDefaults(suiteName: kSUITENAME)!.object(forKey: kKEY)
Поэтому мой TodayExtension всегда говорит, что у меня нет заметок. Есть ли у вас какие-либо идеи, почему эта проблема возникает?
Спасибо за помощь ! :)