相关疑难解决方法(0)

尝试将非属性列表对象设置为NSUserDefaults

我以为我知道是什么导致了这个错误,但我似乎无法弄清楚我做错了什么.

这是我得到的完整错误消息:

Attempt to set a non-property-list object (
   "<BC_Person: 0x8f3c140>"
) as an NSUserDefaults value for key personDataArray

我有一个Person我认为符合NSCoding协议的类,我在这个类中有这两个方法:

- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:self.personsName forKey:@"BCPersonsName"];
    [coder encodeObject:self.personsBills forKey:@"BCPersonsBillsArray"];
}

- (id)initWithCoder:(NSCoder *)coder {
    self = [super init];
    if (self) {
        self.personsName = [coder decodeObjectForKey:@"BCPersonsName"];
        self.personsBills = [coder decodeObjectForKey:@"BCPersonsBillsArray"];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

在应用程序的某个时刻,NSStringBC_PersonClass设置中,我有一个DataSave类,我认为正在处理我的属性编码BC_PersonClass.这是我在DataSave课堂上使用的代码:

- (void)savePersonArrayData:(BC_Person *)personObject
{
   // NSLog(@"name of the person %@", personObject.personsName); …
Run Code Online (Sandbox Code Playgroud)

encoding objective-c nsuserdefaults ios

185
推荐指数
10
解决办法
14万
查看次数

将自定义对象保存到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万
查看次数

检查NSUserDefaults密钥是否存在

在我的应用程序中,我使用以下代码保存密钥:

func saveKey(){
        var xmineSpillere = mineSpillere
        var defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(xmineSpillere, forKey: "YourKey")
    }
Run Code Online (Sandbox Code Playgroud)

但是如何检查密钥是否存在?我希望代码是这样的:

if key("YourKey") exists {
    println("key exists")
}
else {
    println("does not exist")
}
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中做这样的事情?

nsuserdefaults swift

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

标签 统计

nsuserdefaults ×3

ios ×2

swift ×2

encoding ×1

objective-c ×1