Mar*_*man 2 xcode objective-c ios apple-watch watchkit
我想,既然"Watch App"是同一iOS应用程序中的一个包,我应该可以访问Apple Watch App中的NSUserDefaults.这不是这样吗?
我似乎无法从我的iOS获取NSUserDefaults值(我确保数据因为它在iOS应用程序中正常加载).
当我在Apple Watch应用程序中运行它时,它是空的.我是否无法访问与iOS父应用程序相同的NSUserDefaults值?
我有一个包含NSMutalArray的自定义类.这个可变数组是我想要在Watch App的Table中显示的.包含NSMutableArray的同一个类还具有向NSUserDefaults保存/加载数据的功能.它在我的iOS应用程序中工作正常但只是不加载Apple Watch应用程序中的数据.
我在这里做错了什么或者我不知道什么?
这是班级:
请记住,我也将它用作单例对象.它通过首先将自身转换为NSData将其数据保存到NSUserDefaults中 - 这就是为什么你会在这个类中看到你可以忽略的额外函数.
#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
Run Code Online (Sandbox Code Playgroud)
谢谢.
| 归档时间: |
|
| 查看次数: |
3397 次 |
| 最近记录: |