相关疑难解决方法(0)

将自定义对象保存到NSUserDefaults中

我有新闻ViewControllerTeamViewController.所述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 ios swift

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

将自定义类对象转换为NSData

我有一个我要保存的自定义类NSUserDefaults.我被告知我需要将类对象转换为数据以便将其保存到NSUserDefaults.我发现了很多离散的字符串或内容,NSData但是自定义类没有NSData.我对NSData编码的复杂性知之甚少.任何帮助都表示赞赏

编辑:虽然我知道这里有类似的答案,但没有一个在Swift中.语言之间的翻译是可行的,但它非常繁琐,有时非常反直觉.

nsdata ios swift

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

NSInvalidUnarchiveOperationException无法解码Apple Watch扩展中的对象错误

我有一个用户对象,我需要存储在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',原因:'*** …

objective-c nsuserdefaults ios8-extension watchkit

8
推荐指数
1
解决办法
1735
查看次数

如何使用NSUserDefaults在Swift中存储自定义类的数组?

我有一个名为的自定义类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)

nsuserdefaults ios swift swift2

8
推荐指数
2
解决办法
9823
查看次数

保留多个用户(NSUserDefaults,XML文件或数据库)首选项的最佳方法

我正在创建一个iOS应用程序,可以管理用户并登录它们.

我想保留每个用户的用户数据设置,但我不确定每个用户保存此设置的最佳方法是什么.

我应该将数据保存到xml文件,还是NSUserDefaults,甚至将它们保存到我的Parse Cloud数据库中?

我只想在加载视图时保存用户属性列表,但我必须考虑到我的应用程序必须为当前用户加载正确的参数.

例如:

用户:Peter trackingSwitchEnabled:是的

用户:Molly trackingSwitchEnabled:没有

用户:Paul trackingSwitchEnabled:是的

objective-c ios

5
推荐指数
1
解决办法
2630
查看次数

在NSUserDefaults中存储自定义对象时,应用程序崩溃

我有一个名为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)

xcode ios swift

5
推荐指数
1
解决办法
1661
查看次数

将swifty json数组保存到用户默认值

我有一个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)

swift alamofire swifty-json

5
推荐指数
1
解决办法
2524
查看次数

如何存储自定义对象数组(目标)

如何存储我在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)

nsuserdefaults ios swift

4
推荐指数
2
解决办法
3628
查看次数

如何在 NSUserDefaults 中存储自定义对象

对于重复的问题,我深表歉意。我是 ios 新手。我想将自定义对象存储在用户默认值中。我正在使用 Objective-c 。

提前致谢

iphone objective-c nsuserdefaults ios

3
推荐指数
1
解决办法
5186
查看次数

如何在数组中保存自定义对象并将其存储在NSUserDefaults - iPhone中

我在按钮操作方法后获取自定义类对象.现在我需要存储多个自定义对象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)

arrays objective-c nsuserdefaults ios

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

如何在iOS中使用NSUserDafaults保存和检索NSObject类

嗨我想保存和检索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)

objective-c nsuserdefaults ios

2
推荐指数
1
解决办法
1513
查看次数

如何计算保存到NSUserDefault中的对象数量?

我有一个关于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)

iphone objective-c

0
推荐指数
1
解决办法
1623
查看次数