代码之家  ›  专栏  ›  技术社区  ›  Dzeremix

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

  •  7
  • Dzeremix  · 技术社区  · 9 年前

    我找不到在尝试保存时出错的原因 Dictionary NSUserDefaults

    有一个非常简单的类函数:

    class func userLoggedIn(udid udid: String, username: String, email: String, userData: [String: AnyObject]) {
        let userDataDictionary: NSDictionary = NSDictionary(dictionary: userData)
    
        NSUserDefaults.standardUserDefaults().setObject(udid, forKey: UserDefaultsKeyType.UserUDID.rawValue)
        NSUserDefaults.standardUserDefaults().setObject(username, forKey: UserDefaultsKeyType.Username.rawValue)
        NSUserDefaults.standardUserDefaults().setObject(email, forKey: UserDefaultsKeyType.Email.rawValue)
        NSUserDefaults.standardUserDefaults().setObject(userDataDictionary, forKey: UserDefaultsKeyType.UserData.rawValue)
    
        NSUserDefaults.standardUserDefaults().synchronize()
    }
    

    它创建的记录很少是记录的用户数据。不幸的是,.UserData密钥有问题。在过去的几行代码中,我试图将userData对象保存在该键上。但在错误之后,我添加了新的临时对象。在我尝试保存一些新数据后,我得到了该错误:

        2016-10-31 18:45:04.564 ios_app[11679:194224] Attempt to set a non-property-list object {
        account = 1;
        email = "te@st.com";
        emailVerified = 0;
        firstName = test;
        values = 0;
        gender = "<null>";
        description = string;
        name = test;
        permissions =     (
            "test_user_role"
        );
    } as an NSUserDefaults/CFPreferences value for key userData
    2016-10-31 18:45:04.572 ios_app[11679:194224] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object {
        account = 1;
        email = "te@st.com";
        emailVerified = 0;
        firstName = test;
        values = 0;
        gender = "<null>";
        description = string;
        name = test;
        permissions =     (
            "test_user_role"
        );
    } for key userData'
    *** First throw call stack:
    (
        0   CoreFoundation                      0x000000010bfded85 __exceptionPreprocess + 165
        1   libobjc.A.dylib                     0x000000010ba52deb objc_exception_throw + 48
        2   CoreFoundation                      0x000000010bfdecbd +[NSException raise:format:] + 205
        3   CoreFoundation                      0x000000010bf99dee _CFPrefsValidateValueForKey + 142
        4   CoreFoundation                      0x000000010bfe1ed9 -[CFPrefsPlistSource sendMessageSettingValue:forKey:] + 217
        5   CoreFoundation                      0x000000010bfe0a1d -[CFPrefsPlistSource alreadylocked_setValues:forKeys:count:] + 509
        6   CoreFoundation                      0x000000010bf99f15 -[CFPrefsSource setValues:forKeys:count:removeValuesForKeys:count:] + 261
        7   CoreFoundation                      0x000000010bed6950 -[CFPrefsSource setValues:forKeys:count:] + 32
        8   CoreFoundation                      0x000000010bfd8a6a -[CFPrefsSearchListSource alreadylocked_setValues:forKeys:count:] + 362
        9   CoreFoundation                      0x000000010bf99f15 -[CFPrefsSource setValues:forKeys:count:removeValuesForKeys:count:] + 261
        10  CoreFoundation                      0x000000010bed6950 -[CFPrefsSource setValues:forKeys:count:] + 32
        11  CoreFoundation                      0x000000010bf0fd0a -[CFPrefsSource setValue:forKey:] + 58
        12  CoreFoundation                      0x000000010bfd69f1 __95+[CFPrefsSearchListSource withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 385
        13  CoreFoundation                      0x000000010bfd67f6 normalizeQuintuplet + 518
        14  CoreFoundation                      0x000000010bfd65e4 +[CFPrefsSearchListSource withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 100
        15  CoreFoundation                      0x000000010bfc4169 _CFPreferencesSetAppValueWithContainer + 153
        16  Foundation                          0x000000010b6062fe - [NSUserDefaults(NSUserDefaults) setObject:forKey:] + 55
    
    [...]
    
        30  UIKit                               0x0000000109aa9f09 UIApplicationMain + 171
                31  ios_app                     0x00000001085619c2 main + 114
                32  libdyld.dylib                       0x000000010cdb792d start + 1
                33  ???                                 0x0000000000000001 0x0 + 1
            )
            libc++abi.dylib: terminating with uncaught exception of type NSException
    

    我将很乐意提供帮助:)

    1 回复  |  直到 9 年前
        1
  •  18
  •   Community Mohan Dere    5 年前

    这里不能有空。

    属性列表不支持显式空值

    Wikipedia