我有新闻ViewController和TeamViewController.所述TeamViewController含有选择加入到阵列时teamObjects的的tableView.我想添加这个数组,NSUserDefaults所以我可以从NewsController包含url请求的地方访问它们,其中需要teamObjects.但是我一直得到:
'尝试为关键团队插入非属性列表对象("")
如果有更好的方法而不是存储它,我愿意接受其他建议 NSUserDefaults
didSelectRowAtIndexPath 方法
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let team = self.teamArray[indexPath.row] as Team
var removed = false
for (index, value) in enumerate(self.teamSelected) {
if (value == team) {
self.teamSelected.removeAtIndex(index)
removed = true
}
}
if (!removed) {
self.teamSelected.append(team)
}
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue(self.teamSelected, forKey: "teams")
userDefaults.synchronize()
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
我的目标
class Team: NSObject{
var id: Int!
var name: NSString!
var …Run Code Online (Sandbox Code Playgroud) 我有一个我要保存的自定义类NSUserDefaults.我被告知我需要将类对象转换为数据以便将其保存到NSUserDefaults.我发现了很多离散的字符串或内容,NSData但是自定义类没有NSData.我对NSData编码的复杂性知之甚少.任何帮助都表示赞赏
编辑:虽然我知道这里有类似的答案,但没有一个在Swift中.语言之间的翻译是可行的,但它非常繁琐,有时非常反直觉.
我有一个用户对象,我需要存储在NSUserDefaults中并与iOS 8扩展应用程序(Watchkit)共享.在主容器应用程序中,我可以毫无问题地对对象进行编码和解码.但是,当我尝试在Extension中检索存储的用户对象时,出现"'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class"错误.
据我所知,NSCoding已在对象中正确实现(我能够在'main'应用程序中对对象进行编码和解码).
用于存储用户对象的"容器"应用中的代码.
//Store user data in NSUserDefaults
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mygroup"];
SFUserAccount *user = [SFUserAccountManager sharedInstance].currentUser;
NSData *userEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:user];
[defaults removeObjectForKey:@"SF User Acct1"]; //remove any old values
[defaults setObject:userEncodedObject forKey:@"SF User Acct1"];
[defaults synchronize];
SFUserAccount *decodedUser = [NSKeyedUnarchiver unarchiveObjectWithData:userEncodedObject];
Run Code Online (Sandbox Code Playgroud)
上面的最后一行在主应用程序中执行测试解码工作正常.
从NSUserDefaults检索并在扩展目标中解码的代码如下.
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mygroup"];
NSData *archivedUser = [defaults objectForKey:@"SF User Acct1"];
if (archivedUser){
SFUserAccount *user = [NSKeyedUnarchiver unarchiveObjectWithData:archivedUser];
}
Run Code Online (Sandbox Code Playgroud)
在扩展代码中,我得到一个"'NSInvalidUnarchiveOperationException',原因:'*** …
我有一个名为的自定义类Person,它在输入信息时存储有关某人的各种属性.
class Person {
// Person dictionary variable
var name: String?
var age: String?
var html_url: String?
init(json: NSDictionary) { // Dictionary object
self.name = json["name"] as? String
self.age = json["age"] as? String
self.html_url = json["html_url"] as? String // Location of the JSON file
}
}
Run Code Online (Sandbox Code Playgroud)
创建字典后,将其放入数组中.NSUserDefaults当点击按钮时,我在将阵列保存时遇到问题.
personArray.append(newPerson) // newPerson = dictionary of attributes
NSUserDefaults.standardUserDefaults().setObject(personArray, forKey: "personArray")
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)
我已经看过如何在NSUserDefaults中存储自定义对象和使用NSCoding将自定义SWIFT类保存到UserDefaults但是我没有运气并且发现它很难理解.
当我只是尝试保存到NSUserDefaults时,我被告知以下内容:
Attempt to set a non-property-list object (
"PersonApp.Person"
) as an NSUserDefaults/CFPreferences …Run Code Online (Sandbox Code Playgroud) 我正在创建一个iOS应用程序,可以管理用户并登录它们.
我想保留每个用户的用户数据设置,但我不确定每个用户保存此设置的最佳方法是什么.
我应该将数据保存到xml文件,还是NSUserDefaults,甚至将它们保存到我的Parse Cloud数据库中?
我只想在加载视图时保存用户属性列表,但我必须考虑到我的应用程序必须为当前用户加载正确的参数.
例如:
用户:Peter trackingSwitchEnabled:是的
用户:Molly trackingSwitchEnabled:没有
用户:Paul trackingSwitchEnabled:是的
我有一个名为Userwitch的自定义类符合NSCoding协议.但是当我试图将它存储在NSUserDefaults中时,我收到此错误:
Property list invalid for format: 200
(property lists cannot contain objects of type 'CFType')
Run Code Online (Sandbox Code Playgroud)
这个警告:
NSForwarding: warning: object 0x7f816a681110 of class 'Shikimori.User'
does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[Shikimori.User _copyDescription]
Run Code Online (Sandbox Code Playgroud)
User 类:
class User: NSCoding {
private enum CoderKeys: String {
case ID = "user.id"
case Username = "user.username"
case Email = "user.email"
case Avatar = "user.avatar"
}
let id: Int
let username: String
let email: String
let avatar: String
init(id: Int, username: String, …Run Code Online (Sandbox Code Playgroud) 我有一个json data,它提供以下信息:
let data = [
{
"QuestionTitle" : "Entomology is the science that studies",
"Id" : 205,
"Options" : [
{ "Option" : "Insects", "Id" : 810 },
{ "Option" : "The origin and history of technical and scientific terms", "Id" : 811 },
{ "Option" : "The formation of rocks", "Id" : 812 },
{ "Option" : "Behavior of human beings", "Id" : 809 }
]
},
{
"QuestionTitle" : "A train running at the speed of …Run Code Online (Sandbox Code Playgroud) 如何存储我在NSUserDefaults中创建的Goal类型的对象数组?(快速)
这是代码:
func saveGoalList ( newGoalList : [Goal] ){
let updatedGoalList = newGoalList;
NSUserDefaults.standardUserDefaults().setObject(updatedGoalList, forKey: "GoalList")
NSUserDefaults.standardUserDefaults().synchronize()
}
class GoalsViewController: MainPageContentViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: GoalsTableView!
var cell = GoalTableViewCell()
var goalsArray : Array<Goal> = [] //
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
if var storedGoalList: [Goal] = NSUserDefaults.standardUserDefaults().objectForKey("GoalList") as? [Goal]{
goalsArray = storedGoalList;
}
var goal = Goal(title: "Walk the Dog")
goalsArray.append(goal)
saveGoalList(goalsArray)
self.tableView?.reloadData()
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
self.xpnotificationView.alpha = …Run Code Online (Sandbox Code Playgroud) 对于重复的问题,我深表歉意。我是 ios 新手。我想将自定义对象存储在用户默认值中。我正在使用 Objective-c 。
提前致谢
我在按钮操作方法后获取自定义类对象.现在我需要存储多个自定义对象NSMutableArray,然后将此数组存储在其中NSUserDefaults.
这是我的代码:
-(IBAction)onClickSubmitLater:(id)sender
{
//Saving store in user defaults for later upload data.
NSMutableArray *arrayStoreList = [[NSMutableArray alloc] init];
arrayStoreList = [Util getArrayPreference:@"Store"];//arrayStoreList is the list of all stores.
Store *store = [[Store alloc] init];
store = [arrayStoreList objectAtIndex:self.selectedStoreIndex];//here i am getting particular store that i need to save in array.
//archive
NSData *dataStore = [NSKeyedArchiver archivedDataWithRootObject:store];
[[NSUserDefaults standardUserDefaults] setObject:dataStore forKey:@"resultStore"];
//unarchive
NSData *dataResultStore = [[NSUserDefaults standardUserDefaults] objectForKey:@"resultStore"];
Store *resultStore = (Store *)[NSKeyedUnarchiver unarchiveObjectWithData:dataResultStore];
NSLog(@"%@", resultStore); …Run Code Online (Sandbox Code Playgroud) 嗨我想保存和检索NSObject类使用NSUserDefaults我写下面的代码,但我得到如下的异常
由于未捕获的异常'
NSInvalidArgumentException' 终止应用程序,原因:'尝试为密钥DATA插入非属性列表对象'
为了节省: -
SavingBean*savingbean = [[SavingBean alloc]init];
[savingbean savingData:userName.text :passWord.text];
NSUserDefaults * defaults = [[NSUserDefaults alloc]init];
[defaults setObject:savingbean forKey:@"DATA"];
Run Code Online (Sandbox Code Playgroud)
检索: -
defaults = [[NSUserDefaults alloc]init];
savingbean = [defaults objectForKey:@"DATA"];
NSLog(@"Username is===>%@",savingbean.userName);
NSLog(@"Password is===>%@",savingbean.passWord);
Run Code Online (Sandbox Code Playgroud)
ModelClas: -
.h文件: -
#import <Foundation/Foundation.h>
@interface SavingBean : NSObject{
NSString *userName;
NSString *passWord;
}
@property(nonatomic, retain) NSString *userName;
@property(nonatomic, retain) NSString *passWord;
-(void)savingData :(NSString*)userName :(NSString*)password;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件: -
#import "SavingBean.h"
@implementation SavingBean
@synthesize userName,passWord;
-(void)savingData :(NSString*)username :(NSString*)password{
userName …Run Code Online (Sandbox Code Playgroud) 我有一个关于NSUserDefault的问题.目前,我想编写一个功能,将喜爱的学校保存到列表中.
我有学校名称和学校ID.所以每次保存,学校名称+学校ID都将是1个字典对象.
然后我将基于id的密钥保存到NSUserDefault中.我想知道我保存到NSUserDefault中的对象数量.或者我怎样才能从NSUserDEfault中获取所有对象,因为我的每个键都不同.请帮帮我.下面是我的代码:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *schools = [[NSMutableDictionary alloc] init];
[schools setObject:schoolName forKey:kSchoolName];
[schools setObject:schoolID forKey:kSchoolID];
[userDefault setObject:schools forKey:schoolID];
Run Code Online (Sandbox Code Playgroud)