Я решил, что, поскольку «Приложение для часов» является пакетом в том же приложении для iOS, я должен иметь доступ к NSUserDefaults в своем приложении Apple Watch. Разве это не так?
Кажется, я не могу получить значения NSUserDefaults из моей iOS (у которой, как я убедился, есть данные, поскольку она отлично загружается в приложении iOS).
Когда я запускаю его в приложении Apple Watch, оно оказывается пустым. У меня нет доступа к тем же значениям NSUserDefaults, что и в родительском приложении iOS?
У меня есть собственный класс, который содержит NSMutalArray. Этот изменяемый массив — это то, что я хочу отобразить в таблице в приложении Watch. Этот же класс, который содержит NSMutableArray, также имеет функции для сохранения/загрузки данных в/из NSUserDefaults. Он отлично работает в моем приложении для iOS, но просто не загружает данные в приложение Apple Watch.
Что я здесь делаю не так или чего не знаю?
Вот класс:
Имейте в виду, что я также использую его как одноэлементный объект. Он сохраняет свои данные в NSUserDefaults, сначала преобразовывая себя в NSData, поэтому вы видите дополнительные функции в этом классе, которые вы можете просто игнорировать.
#import "Teacher.h"
#import "Course.h"
@implementation Teacher
static Teacher *sharedInstance = Nil;
+ (Teacher *)sharedInstance
{
@synchronized(self)
{
if(!sharedInstance)
{
sharedInstance = [[self alloc] init];
}
}
return sharedInstance;
}
- (id)init
{
self = [super init];
if (self)
{
_classes = [[NSMutableArray alloc] init];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:_classes forKey:@"classes"];
}
- (id)initWithCoder:(NSCoder *)coder
{
self = [super init];
if (self)
{
_classes = [coder decodeObjectForKey:@"classes"];
}
return self;
}
+ (void)saveData
{
NSMutableArray *teacherClasses = [[Teacher sharedInstance] classes];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:teacherClasses];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:data forKey:@"teacherClasses"];
}
+ (void)loadData
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *loadClasses= [NSKeyedUnarchiver unarchiveObjectWithData:[userDefaults objectForKey:@"teacherClasses"]];
if(loadClasses == Nil)
{
loadClasses = [[NSMutableArray alloc] init];
}
[[Teacher sharedInstance] setClasses:loadClasses];
}
- (Teacher *) copyWithZone:(NSZone *)zone
{
Teacher *teacher = [[Teacher alloc] init];
[teacher setClasses:[self classes]];
return teacher;
}
@end
Спасибо.