Я понял, что, поскольку приложение «Наблюдение» является пакетом в том же приложении iOS, я должен иметь доступ к NSUserDefaults в своем приложении Apple Watch. Разве это не так?Apple Watch, WatchKit и NSUserDefaults
Я не могу получить значения 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
Спасибо.
Да, он работал над добавлением общего контейнера. Спасибо. –
@matt s могу ли я использовать один и тот же файл singleton и файлы AFNetworking в приложении для наблюдения за часами? если да, то пожалуйста объясните мне как? Заранее спасибо. – ilesh