相关疑难解决方法(0)

在NSUserDefaults中的NSMutableArray中存储自定义对象

我最近一直试图将我的iPhone应用程序的搜索结果存储在NSUserDefaults集合中.我也使用它来成功保存用户注册信息,但由于某种原因,尝试存储我的自定义位置类的NSMutableArray总是返回空.

我尝试将NSMutableArray转换为NSData元素,但是我得到了相同的结果(可以在iPhone上使用NSUserDefaults保存整数数组吗?)

我试过的代码示例是:

保存:

[prefs setObject:results forKey:@"lastResults"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)

要么

NSData *data = [NSData dataWithBytes:&results length:sizeof(results)];
[prefs setObject:data forKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)

要么

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:results];
[prefs setObject:data forKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)

加载:

lastResults = (NSMutableArray *)[prefs objectForKey:@"lastResults"];
Run Code Online (Sandbox Code Playgroud)

要么

NSData *data = [prefs objectForKey:@"lastResults"];
memcpy(&lastResults, data.bytes, data.length);  
Run Code Online (Sandbox Code Playgroud)

要么

NSData *data = [prefs objectForKey:@"lastResults"];
lastResults = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)

按照下面的建议后,我也在我的对象中实现了NSCoder(忽略过度使用NSString的临时性):

#import "Location.h"


@implementation Location

@synthesize locationId;
@synthesize companyName;
@synthesize addressLine1;
@synthesize addressLine2;
@synthesize city;
@synthesize postcode;
@synthesize telephoneNumber;
@synthesize description;
@synthesize rating;
@synthesize priceGuide; …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch

101
推荐指数
2
解决办法
7万
查看次数

标签 统计

cocoa-touch ×1