gpt4 book ai didi

ios - Apple Watch、WatchKit 和 NSUserDefaults

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:27:02 24 4
gpt4 key购买 nike

<分区>

我想既然“Watch App”是同一个 iOS 应用程序中的一个包,我应该能够在我的 Apple Watch App 中访问 NSUserDefaults。不是这样吗?

我似乎无法从我的 iOS 获取 NSUserDefaults 值(我确保它有数据,因为它在 iOS 应用程序中加载正常)。

当我在 Apple Watch 应用程序中运行它时,它是空的。我无法访问与 iOS 父应用程序相同的 NSUserDefaults 值吗?

我有一个包含 NSMutalArray 的自定义类。这个可变数组是我想要在 Watch App 的表格中显示的内容。包含 NSMutableArray 的同一类还具有将数据保存到 NSUserDefaults 或从 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

谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com