gpt4 book ai didi

ios - 将NSObjects的NSMutableArray存储到NSUserDefaults中

转载 作者:行者123 更新时间:2023-12-01 18:23:42 25 4
gpt4 key购买 nike

我目前正在为iPhone编写应用程序,我需要遵循的设计要求之一如下:

NSObjects存储为NSMutableArray,将数据显示为UITableView,然后将数据保存为NSUserDefaults。我能够将NSObject存储到NSMutableArray中并将其显示在UITableView中,但是我需要帮助您了解如何将NSObject中的数据存储到NSUserDefaults中。

我对NSObject (.h)的定义:

    #import <Foundation/Foundation.h>
@interface Name : NSObject
@property (nonatomic)NSString *name;
@property (nonatomic)NSInteger score;
@end

我的 NSObject (.m)实现
    #import "Name.h"
@implementation Name
-(id)initWithName:(NSString*)name andScore:(NSInteger)score
{
_name = name;
_score= score;
return [super init];
}
@end

这是我存储到 NSObject的方法:
    NSString *newName = _submitNameTextBox.text;
NSInteger score = 0;
Name *name = [[Name alloc] init];//Name is the object name
name.name = newName;
name.score = score;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSMutableArray *listTemp = appDelegate.nameList; //main copy of my list is in app delegate, but i have it accessible by my uiviewcontrollers.

我在 NSObjects中添加 secondUIViewController,并在我的ThirdUIViewController中显示数据,而我的第一个是存储数据的基本操作屏幕。

所以我的问题是,鉴于我用来定义 NSObject的代码以及如何将所述对象存储到 NSMutableArray,在应用程序关闭时如何将 NSMutableArray存储到 NSUserDefaults。想法是阵列需要从上次运行时向程序阵列加载数据,以便用户可以跟踪其数据。

最佳答案

如果您需要编写包含字符串的数组,则:

正在保存:

[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"ArrayKey"];

读 :
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"ArrayKey"]];

由于需要编写包含对象的数组,因此需要对其进行编码并使用Archiver。
- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:array forKey:@"array"];
}

- (id)initWithCoder:(NSCoder *)coder {
    array=[coder decodeObjectForKey:@"array"];
    return self;
}


- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
return nil;
}

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
{
yourObject=[NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"array is ->%@",[yourObject array]);
return YES;
}

关于ios - 将NSObjects的NSMutableArray存储到NSUserDefaults中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15515833/

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