首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSUserDefaultsController:“尝试将非属性列表对象...设置为键的NSUserDefaults/CFPreferences值...”

NSUserDefaultsController是苹果公司提供的一个控制器类,用于管理和操作用户偏好设置(User Defaults)。它是Mac OS X和iOS开发中常用的类之一。

NSUserDefaultsController的主要作用是将非属性列表对象(Non-Property List Objects)设置为键的NSUserDefaults/CFPreferences值。在使用NSUserDefaults存储数据时,通常只能存储属性列表对象,如NSString、NSNumber、NSArray、NSDictionary等。但有时候我们需要存储自定义的对象,这时就可以使用NSUserDefaultsController来实现。

非属性列表对象是指那些无法直接被序列化为属性列表(Property List)的对象,比如自定义的类对象。NSUserDefaultsController通过实现NSCoding协议,将非属性列表对象转换为NSData,然后存储到NSUserDefaults中。

使用NSUserDefaultsController的优势在于简化了对用户偏好设置的管理和操作。它提供了一种便捷的方式来存储和读取非属性列表对象,避免了手动进行序列化和反序列化的繁琐过程。

应用场景:

  1. 存储和读取自定义对象的用户偏好设置。
  2. 管理和操作应用程序的配置信息,如窗口位置、字体大小、主题等。
  3. 实现用户自定义设置,允许用户自定义应用程序的行为和外观。

腾讯云相关产品推荐: 腾讯云提供了一系列云计算产品,其中与用户偏好设置相关的产品是腾讯云的云数据库Redis。Redis是一种高性能的键值存储数据库,支持存储和读取非属性列表对象。您可以使用腾讯云的云数据库Redis来存储和读取用户偏好设置数据。

腾讯云云数据库Redis产品介绍链接地址:https://cloud.tencent.com/product/redis

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Mac开发之 Cocoa 绑定 入门

3.绑定简单使用方式 3.1 视图(View)绑定到模型(Model) 视图绑定到模型对象,就是告诉视图需要显示内容来自哪里(通常是数据模型对象某个属性),以及什么时候更新显示内容.当数据模型某一属性发生改变时...例如,假设我们有一个Person对象,它有一个name属性,如果一个Label绑定到Person对象name属性上,那么它们两个(Person和Label)将会被链接在一起,name属性是什么,...score属性,初始0 添加Person类,并初始化score属性0 (3)选中Main.storyboard,添加界面组件 拖入一个Label,放在视图右侧,然后再拖入一个slider,把它放在...slider控件continuous属性即可. (7) 设置持续更新 设置slidercontinuous 我们发现应用启动时Label显示内容0,我们尝试通过改变sonscore来看看结果...,因为它内容不支持KVO(cocoa 绑定需要依赖KVO这一方式),因此苹果提供了一个对象,可以让我们在绑定中使用NSUserDefaults信息,这个对象就是NSUserDefaultsController

1.9K20

iOS_沙盒文件系统

防止篡改,捆绑目录在安装时签名。写入此目录会更改签名,从而导致应用程序无法启动。但是,您可以只读访问应用程序捆绑包中存储任何资源。 2、Documents: 存放用户生成数据放入。...您应用可以读取和删除此目录中文件,但不能创建新文件或写入现有文件。 (如果用户尝试编辑此目录中文件,那么您应用必须在进行任何更改之前以静默方式将其移除目录。)...该目录内容由iTunes和iCloud备份。 3、Library: 这是非用户数据文件顶级目录。一般文件放在几个标准子目录中。...Library子目录用于您不希望向用户公开任何文件。您应用不应将这些目录用于用户数据文件。 该目录内容(Caches子目录除外)由iTunes和iCloud备份。...4)Preferences: 包含应用程序偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类或CFPreferences来获取和设置应用程序偏好。

2.2K10
  • GB代码规范1.0

    方法尽量控制最多五十行 一个方法内部最多五十行 如果超过就精简代码 就分开方法写 方便之后进行热修复 代码重构 注释一定要写 自己管理类一定注释属性用途 方法用途 参数说明 属性如果设置默认...一定注明默认是什么 如果方法内部存在逻辑判断 方法跳转 一定注释判断用法 方法跳转用法 除了初始化操作 其他声明变量 赋值 判断 应该注明注释用途 不允许外接修改属性设置readonly 大家平时设置属性默认是可读可写...对于属性不同作用 比如设置颜色 设置字体 设置其他样式 可以进行分组 对于方法作用分类 比如添加功能 删除功能 对于其他代理方法 Get Set方法 Init初始化方法 BOOL类型属性声明...= @"" 对于局部变量尽量初始化 局部变量要初始化 属性有默认 所以我们不必须对于属性进行初始化 我之前遇到一个BUG就是int类型没有初始化给我默认Nan造成崩溃 建议写法 int...)(void) 错误写法 typedef void(DidUpdateViewCallBack) 使用NSUserDefaults要先创建 因为我们用到NSUserDefaults无非是保存和读取 事先创建一个对象

    1.2K20

    iOS应用数据存储(数据持久化)常用方式一、iOS数据持久化方式二、应用沙盒(应用程序文件夹)三、使用方法

    一、iOS数据持久化方式 (1)XML属性列表(plist)归档 (2)Preference(偏好设置),本质还是通过“plist”来存储数据, 但是使用更简单(无需关注文件、文件夹路径和名称) (...路径获取:利用NSSearchPathForDirectoriesInDomains函数(函数第2个参数改为:NSCachesDirectory即可) Library/Preference: 保存应用所有偏好设置...路径获取: 通过NSUserDefaults类存取该目录下设置信息 ---- 三、使用方法 1、属性列表 属性列表是一种XML格式文件,拓展名为plist,如果对象是NSString、NSDictionary...2、偏好设置 通过NSUserDefaults就能直接访问软件偏好设置(Library/Preferences) UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中数据写入本地磁盘...写入步骤: (1) 获取偏好设置对象 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; (2)写入 [userDefault

    2.6K70

    iOS常用数据存储方式

    1.1 目录结构分析 1.2 应用沙盒目录获取方式 1.3 偏好设置(standardUserDefaults 使用) 1.4 存储自定义类型对象NSUserDefaults 2.1 什么是Keychain...sql日志输出 开关 7.9、coredata 延迟加载 7.10、NSManagedObject子类 前言 iOS应用数据存储常用方式 1、preference偏好设置 2、XML属性列表归档...一般存储体积大、不需要备份重要数据 5 Library/Preference: 保存应用所有偏好设置,iOSSettings(设置)应用会在该目录中查找应用设置信息。...类存取该目录下设置信息 1.3 偏好设置(standardUserDefaults 使用) 针对应用字体大小、是否保存用户名等偏好设置,IOS每个应用都有个NSUserDefaults实例,通过它来存取偏好设置...NSUserDefaults设置数据时候,不是立即写入,而是根据时间戳定时地把缓存中数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。

    1.9K20

    编码篇-持久化NSUserDefaults

    NSUserDefaults我们封装了读写plist文件常用操作,我们可以使用它来保存一些简单数据,比如系统配置,用户设置参数之类。...Attempt to insert non-property list object 报错原因, 从NSUserDefaults返回是不可改变,即便是你在存储时候使用是可变。...- setDouble:forKey: - setURL:forKey: 这将使某些设置更简单。...此时依然是'color'=='red'; 储存自定义对象 使用归档存储(真的储存) 一个NSUserDefaults对象必须是属性表,这也就是说我们可以存储NSData,NSString,NSNUmber...里面必须不能包含 Null 对象,否则就会抛出异常 数据储入plist文件中 写入文件方法:writeToFiel:对象调用方法 - (void)writeDataToPlist :(NSString

    1.2K10

    控制器和应用数据存储

    3、ios应用常用数据存储方式主要有:    1)、plist (利用xml属性列表归档NSDictionary、NSArray、NSData、NSNumber等系统类型数据)    2)、NSUserDefaults... 偏好设置    3)、NSKeydeArchiver归档(一般用来存储自定义对象)    4)、SQLite(关系型数据库,不能直接存储对象,使用sql语句序列化对象存储)    5)、Core Data...iTunes同步设备时,不会备份该目录;    4)、Library/Caches 保存应用运行时生成重要需要持久化数据,iTunes同步设备时不会备份该目录;    5)、Library/Prefences...2)、使用偏好设置存储 /* 保存数据到用户偏好设置中 */ - (IBAction)saveDataToUserPreference:(id)sender{ NSUserDefaults *ud...= [NSUserDefaults standardUserDefaults]; // 自动帮我们生成一个plist文件存放在偏好设置文件夹 [ud setObject:self.txtPlist.text

    80530

    归档

    归档 基本概念 - 对象归档是指将对象写入文件保存在硬盘上,当再次重新打开程序时,可以还原这些对象。你也可以称他对象序列化,对象持久化。...数据持久性方式 NSKeyedArchiver --- 对象归档 NSUserDefaults 属性列表化(NSArray、NSDictionary保存文件) SQlite数据库、Core Data数据库...归档形式 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档后文件是加密属性列表是明文。...属性列表也不能对自定义对象进行保存。...添加归档内容(设置key与value) 完成归档 归档数据存入磁盘中 解归档 从磁盘读取文件,生成 NSData 实例 根据 Data 实例创建和初始化解归档实例 解归档,根据key 访问 value

    1.2K60

    iOS学习——页面的传方式iOS----KVC和KVO 详解

    目前我所了解和掌握方式有: 属性 单例传 NSUserDefaults 代理传 block传 通知传 KVO/KVC iOS----KVC和KVO 详解 二、页面传详解 2.0...传 方法描述:NSUserDefaults所要传写在沙盒目录里面,需要获取值时候直接访问沙盒,获取这个就可以了,这种传方法一般用在需要将数据本地存储时候,比如:用户名之类,当用户下次登录或者使用...:@"NSUserDefaults"]; 2.6 单例传 方法描述:单例传性质和NSUserDefaults性质类似,只是单例传数据保存在单例对象中,需要时候同样从单例对象中去获取数据使用就...+ (instancetype) shardDanLiObj; //单例对象获取方法 @end 需要传递数据时使用单例类数据保存到单例属性中 [KLDanliObj shardDanLiObj...其实翻译一下就很简单了,就是指iOS开发中,可以允许开发者通过Key名直接访问对象属性,或者给对象属性赋值,而不需要调用明确存取方法,这样就可以在运行时动态地访问和修改对象属性

    1.8K20

    iOS学习——iOS常用存储方式

    其中,iOS中存储方式主要包括以下六类: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 手动存放沙盒 一、沙盒机制...下面我们一个个来进行学习和研究。 2.1 plist文件(属性列表) plist文件是某些特定类,通过XML文件方式保存在目录中。...遵循协议和设置属性 1 //1.遵循NSCoding协议 2 @interface Person : NSObject //2.设置属性 3 @property (strong, nonatomic...ORM是关系数据库中表,转化为程序中对象,但实际上是对数据中数据进行操作。   ...简单点说,Core Data实际上是数据库创建、表创建、对象和表转换等操作封装起来,极大简化了我们操作。

    3K100

    MMKV--基于 mmap iOS 高性能通用 key-value 组件

    在会话列表、会话界面等有大量 cell 地方,希望新加计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。...要做到通用的话,考虑 value 通过 protobuf 协议序列化成统一内存块(buffer),然后就可以这些 KV 对象序列化到内存中。 ?...考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新能力:增量 kv 对象序列化后,直接 append 到内存末尾;这样同一个 key 会有新旧若干份数据,最新数据在最后;那么只需在程序启动第一次打开...mmkv 时,不断用后读入 value 替换之前,就可以保证数据是最新有效。...我们需要在性能和空间上做个折中:以内存 pagesize 单位申请空间,在空间用尽之前都是 append 模式;当 append 到文件末尾时,进行文件重整、key 排重,尝试序列化保存排重结果;排重后空间还是不够用的话

    8.2K211

    UIScrollView 和 UIPageControl 实现启动滑动图

    一、使用NSUserDefaults 判断滑动图有没有出现过,加载滑动图 NSUserDefaults 简介: NSUserDefaults可以数据永久保存在手机中,他是一个单例,用起来很方便...,所以很适合用于保存简单数据和数据做标记。...UIScrollView : 带有滑动效果,在上面加入UIImageView再设置代理后,可以实现翻页显示图片效果 涉及相关属性: contentSize : UIScrollView 显示尺寸...,这个按需求而设 pagingEnabled : 是否支持一页一页翻,设置成YES后,每一次滑动,翻动一页; bounces:是否支持反弹,这是一个动画效果,大家可以设置来看看,一般滑动图设置NO...涉及相关属性: numberOfPages:一共有几个点(几页),这个要设置得和滑动图页数一样 相关代码: #pragma mark - 滑动图 -(void) showScrollView

    59210

    老司机出品——数据持久化之基于FMDBORM数据库设计

    ---- 偏好设置 其实就是我们平常使用NSUserDefaults。...; NSLog(@"%@,%d",tmp.name,tmp.age); } else { NSLog(@"fail"); } 另外,在实现两个协议方法时,你也可以通过runtime获取属性列表来自动完成转换...归档优势在于它支持对象持久化了而不是那几种特殊数据类型,悲催是,你仍需要确保你要归档属性数据类型是遵循。...实现思路大概如下: 找出模型中所有需要落库属性 需要落库属性类型转换为数据库支持类型 落库 所以有了大致思路我们就能以梳理出一套方案: runtime 获取所有属性并进行动态转换 这其中还是参考了很多...他优势在于: 面向对象 无需考虑slq语句组装 无需指定模型与数据表对应关系 无入侵性,现有工程模型无需做修改,直接使用。 遵循协议后可自定义ORM映射关系、落库属性黑白名单等。

    1.2K30

    iOS通过NSUserDefaults实现简单应用间数据传递

    iOS中NSUserDefaults详解 NSUserDefaults是用于保存应用程序设置,应用信息等轻量级数据一个类,其本质是数据写plist文件形式保存在本地。...在IOS中,系统每一个应用程序都默认创建了一个NSUserDefaults对象。...; 这个方法用于默认UserDefaults释放掉,并在下次使用时创建一个新对象,需要注意是,调用这个方法后,对原UserDefaults单例进行KVO监听失效。...)domainName; 根据名字移除稳定域 - (BOOL)synchronize; 对象同步方法,内存中数据写入磁盘。...NSUserDefaults三个特殊系统域如下: NSString * const NSGlobalDomain; 这个是一个系统级别的全局域,存储这系统配置信息,我们可以通过它实现应用程序间传

    90320

    SQL命令 INSERT(一)

    使用架构搜索路径(如果提供)或默认架构名称限定名称与其架构匹配。 column - 可选 - 与提供列表顺序对应列名或以逗号分隔列名列表。如果省略,列表按列号顺序应用于所有列。...它为所有指定列(字段)插入数据,并将未指定默认为NULL或定义默认。它将%ROWCOUNT变量设置受影响行数(始终1或0)。 带有SELECTINSERT会向表中添加多个新行。...此语法不能与链接表一起使用;尝试这样做会导致SQLCODE-155错误。 必须按列号顺序指定。必须采用用户提供每个基表列指定;使用列顺序插入不能采用定义字段默认。...%List必须包含串行对象属性(或占位符逗号),其顺序与这些属性在串行对象中指定顺序相同。 此类型插入可能不会执行%SerialObject属性验证。...未指定串行对象属性默认为NULL。 此类型插入执行%SerialObject属性验证。 显示字符 可以使用CHAR函数和串联运算符插入显示字符。

    6K20

    【IOS】IOS开发问题解决方法索引(一)

    在访问方法设置属性,先保持,再释放 (ztime: 现在有@propperty, @synthesize 两个指令自动创建此代码) 6. 用@"..."...设置项目TypePSGroupSpecifier用于指示该项目是一个新分组开始,其后每个项目都将是此分组一部分,直到一个TypePSGroupSpecifier项目之前。...其它项目的说明 8.4 读取设置 读取应用程序中设置 我们使用NSUserDefaults类读取用户设置,通常使用 NSUserDefaults* defaults = [NSUserDefaultsstandardUserDefaults...]; NSUserDefaults获得方法有: arrayForKey: boolForKey: dataForKey: dictionaryForKey: floatForKey: integerForKey...所以要设置后台继续运行,则在这个函数里面设置即可 / /使用这个方法来释放共享资源,保存用户数据,废止定时器,并存储足够应用程序状态信息情况下被终止后,应用程序恢复到目前状态。

    87740

    iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(使用Keychain 存储UUID)

    删除 Keychain 中 [item remove]; } } II、IDFA(Identifier For Advertising,广告标识符) 在同一个iOS设备上....目前,以下操作均会改变IDFA: 通过设置→通用→还原→抹掉所有内容和设置 通过iTunes还原设备 通过设置→隐私→广告→限制广告追踪(一旦用户限制了广告追踪,我们获取到IDFA将是一个固定...因此,IDFA目前来说比较适合作为iOS设备ID属性。...和IDFA相比,IDFV不会出现获取不到场景。 3.2 IDFV被系统重置场景 通过设置→通用→还原→抹掉所有内容和设置。 通过iTunes还原设备。 卸载设备上某个开发者账号下所有应用程序。...如果用户属于此Vendor所有应用程序都卸载,IDFV也会被系统重置。即使重装该Vendor应用程序,获取到也是一个全新IDFV。

    1.5K10

    解决pyhton object is not subscriptable

    这个错误通常发生在使用字典、列表、元组等可迭代对象时,表明该对象无法进行下标操作。在本篇文章中,我们介绍常见导致该错误出现原因,并提供一些解决方案。...原因出现"object is not subscriptable"错误常见原因之一是,你尝试对一个可迭代对象进行下标操作。...以字典例,当你使用字典来访问对应时,需要使用字典下标操作符​​[]​​。而如果你尝试对一个字典对象(如整数、字符串等)进行下标操作,就会出现该错误。...检查对象属性是否正确访问当你使用下标操作符访问对象属性时,需要确保属性名称正确无误。例如,在使用字典时,你需要使用已存在来访问对应。...__getitem__(index)​​来返回相应元素。使用访问属性在字典或其他类似字典对象中,我们可以通过来访问相应属性

    1.8K41

    【总结】ios端被忽略文件容错测试

    1.了解ios文件存储方式 iOS沙盒机制 应用程序只能在该程序创建文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的代码文件都要保存在此,例如图像,图标,声音,映像,属性列表...1) Documents 目录:一般需要持久数据都放在此目录中,可以在当中添加子文件夹,iTunes备份和恢复时候,会包括此目录。您应该所有的应用程序数据文件写入到这个目录下。...您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序偏好....不同App本地存储文件个数、属性都不同,如果所有的文件都要手动进行容错测试,成本与收益可能不成正比,除非通过白盒测试、自动化容错测试等手段来进行避免。...文件内容检查 1)文件内容空 2)文件中字段被删除 3)文件中字段类型错误 4)文件中字段超出最大 5)文件中字段超出最大长度 6)文件中字段对应内容路径不存在 欢迎添加我们搜狗测试微信号

    1.2K50
    领券