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

iOS:自定义对象的int变量在NSUserDefaults中返回nil

在iOS开发中,NSUserDefaults是一种用于存储应用程序的配置信息和用户偏好设置的机制。它提供了一种简单的方式来保存和读取数据,包括基本数据类型和一些自定义对象。

然而,NSUserDefaults只能存储一些基本数据类型,如NSString、NSNumber、NSData等,而无法直接存储自定义对象。当我们尝试将自定义对象存储到NSUserDefaults中时,如果对象中包含int变量,会返回nil。

这是因为NSUserDefaults使用了Property List(属性列表)来存储数据,而int是一种基本数据类型,不是一个对象,无法直接存储到属性列表中。因此,当我们尝试将自定义对象中的int变量存储到NSUserDefaults中时,会失败并返回nil。

为了解决这个问题,我们可以通过一些方式来存储自定义对象中的int变量。一种常见的方式是将int变量转换为NSNumber对象,然后再存储到NSUserDefaults中。具体步骤如下:

  1. 将int变量转换为NSNumber对象:NSNumber *intNumber = [NSNumber numberWithInt:yourIntVariable];
  2. 将NSNumber对象存储到NSUserDefaults中:[[NSUserDefaults standardUserDefaults] setObject:intNumber forKey:@"yourKey"];
  3. 在需要获取int变量时,从NSUserDefaults中取出NSNumber对象,并将其转换回int类型:NSNumber *intNumber = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"]; int yourIntVariable = [intNumber intValue];

这样,我们就可以成功地将自定义对象中的int变量存储到NSUserDefaults中,并在需要时取出并转换回int类型。

在腾讯云的产品中,与NSUserDefaults类似的功能可以使用腾讯云的云数据库COS(对象存储)来存储和读取数据。COS是一种高可用、高可靠、低成本的云存储服务,适用于存储各种类型的数据,包括文本、图片、音视频等。您可以使用COS SDK来操作COS,具体可以参考腾讯云COS的官方文档:腾讯云COS产品介绍

请注意,以上答案仅针对iOS开发中自定义对象的int变量在NSUserDefaults中返回nil的情况,不涉及其他问题或技术。

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

相关·内容

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

ID _anonymousId = [item value]; if (_anonymousId) { // 将设备 ID 保存在 NSUserDefaults ...ID _anonymousId = [item value]; if (_anonymousId) { // 将设备 ID 保存在 NSUserDefaults ...[item remove]; } } II、IDFA(Identifier For Advertising,广告标识符) 同一个iOS设备上,同一时刻,所有的应用程序获取到IDFA都是相同...它也是一个由32位十六进制组成序列,格式与UUID一致。 每一个iOS设备在所属同一个Vendor应用里,获取到IDFV是相同。...但是由于重复卸载引起极光regid变化,所以推荐用IDFV+账号ID生成别名,避免别名同一个手机绑定了多台设备。

1.4K10

GB代码规范1.0

) CF_AVAILABLE_IOS(_ios) 不建议写法 #define NSAvailableIos(_ios) CF_AVAILABLE_IOS(_ios) 对象调用方法要留空格 建议写法...= @"" 对于局部变量尽量初始化 局部变量要初始化 属性有默认值 所以我们不必须对于属性进行初始化 我之前遇到一个BUG就是int类型没有初始化给我默认Nan造成崩溃 建议写法 int...index = 0; 不建议写法 int index; 对于一些对象判断是否赋值可以不进行初始化 但是对于一定不会为nil要进行初始化 变量规范 一定要使用驼峰命名 建议写法 UNUserNotificationCenter...可以精简代码 当执行方法很多 用变量替换 建议写法 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault...c : d : y; 当三元运算符第二个参数(if 分支)返回和条件语句中已经检查对象一样对象时候,下面的表达方式更灵巧: 推荐: result = object ?

1.2K20
  • 编码篇-持久化NSUserDefaults

    前言 NSUserDefaults类,以字典形式保存数据,IOS会自动把字典键值对转换成对应XML文件(也就是plist文件),这个文件会被保存到APP沙盒目录(路径为Library/Preferences...Attempt to insert non-property list object 报错原因, 从NSUserDefaults返回值是不可改变,即便是你存储时候使用是可变值。...{@"color":@"blue"}]; 这时NSUserDefaults里面'color'=='blue'; 2.如果你app又重新设置了'color'=='red'; 3.这时你重新运行一下你...此时依然是'color'=='red'; 储存自定义对象 使用归档存储(真的储存) 一个NSUserDefaults对象必须是属性表,这也就是说我们可以存储NSData,NSString,NSNUmber...*)coder方法 然后把该自定义对象编码到NSData,再从NSUserDefaults中进行读取。

    1.2K10

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

    一、简述 iOS开发过程,页面跳转时页面之间进行数据传递是很常见事情,我们称这个过程为页面传值。...;然后,子页面返回主页面之前调用代理定义数据传递方法(方法参数就是要传递数据);最后,主页面遵从该代理,并实现代理定义方法,方法实现代码中将参数传递给主页面的属性。...:@"NSUserDefaults"]; 2.6 单例传值 方法描述:单例传值性质和NSUserDefaults传值性质类似,只是单例传值是将数据保存在单例对象,需要时候同样从单例对象中去获取数据使用就...其实翻译一下就很简单了,就是指iOS开发,可以允许开发者通过Key名直接访问对象属性,或者给对象属性赋值,而不需要调用明确存取方法,这样就可以在运行时动态地访问和修改对象属性。...首先在子页面声明一个待观察属性,返回主页面之前修改该属性值。主页面中提前分配并初始化子页面,并且注册对子页面对应属性观察者。

    1.8K20

    IOS开发基础系列】数据持久化专题

    iOS可以有四种持久化数据方式: 属性列表、对象归档、SQLite3和Core Data。...1 NSUserDefault NSUserDefaults简介,使用 NSUserDefaults 存储自定义对象 http://my.oschina.net/u/1245365/blog/294449...而且要注意NSUserDefaults能够处理数据只能是可plist化对象,详情见Property List Programming Guide。     3....,只要在类实现每个属性都是基本数据类型(如int或float)或都是符合NSCoding协议某个类实例,你就可以对你对象进行完整归档。...SQLite支持常见数据类型, 如: 4.3 iOS中使用SQLite3         为了能够iOS中使用SQLite3需要是将libsqlite3.dylib类库添加到Xcode工程工程

    24620

    iOS小技能:APP内本地化语言切换(案例:登录界面切换中英文)

    前言 原理: 从指定表和包返回字符串本地化版本: NSLocalizedStringFromTableInBundle(key, table, _bundle, nil) 切换语言生效方式:采用销毁根控制器...文件 Localizable.strings(Chinese)对应zh-Hans.lproj文件夹Localizable.strings文件 资源文件Localizable.strings配置字符串对应...]; } 1.4 本地化字符串指定参数顺序 对于中英文语法区别,本地化字符串时候,我们常常需要调整stringWithFormat参数顺序 iOS本地化字符串指定参数顺序:应用场景:..."FORMAT" = "I am %2$@ from '%1$@'"; II 自定义解析本地化字符串工具类LanguageManager 2.1 代码实现 LanguageManager 从CSDN...]; } 4.3 本地化字符串指定参数顺序 对于中英文语法区别,本地化字符串时候,我们常常需要调整stringWithFormat参数顺序 原理:%和@中间加上数值(1,2$),数字代表参数顺序

    3.1K20

    iOS微信第三方登录实现

    (注意) 1、下载iOS微信SDK。 2、将SDK放到工程目录。 3、补充导入一些依赖框架。 4、添加URL Types 5、添加iOS9 URL Schemes....对于iOS应用,考虑到iOS应用商店审核指南中相关规定,建议开发者接入微信登录时,先检测用户手机是否已经安装 微信客户端(使用sdkisWXAppInstall函数),对于未安装用户隐藏微信...]; } 执行完上面那一步后,如果客户端安装了微信,那么就会向微信请求相应授权,图如下: 还有实际使用我们还要结合需求做一些改变。...对于iOS应用,考虑到iOS应用商店审核指南中相关规定,建议开发者接入微信登录时,先检测用户手机是否已经安装 微信客户端(使用sdkisWXAppInstall函数),对于未安装用户隐藏微信...让AppDelegate遵守协议,并实现协议方法onResp: ,我们该方法接收请求回来数据,如下: //授权后回调 /* http请求方式:GET // 根据响应结果

    2.4K40

    iOS开发之山寨版新浪微博小结

    之前博客IOS开发之新浪围脖获取微博内容是使用我自己access_token来请求数据,那么如何让其他用户也能登陆并获取自己微博内容呢?接下来就是OAuth和SSO出场时候啦。...1.还是博客开头先来几张截图(第一张是没有登录时启动图,第二张是获取授权页面,第三张是授权后页面,第四张是把之前写iOS开发之自定义表情键盘(组件封装与自动布局)整合了进来)这样的话一个App...3.在用户授权以后,新浪接口或返回一些用户信息,其中就有该授权用户所对应access_token, 下面是响应代码,把返回用户access_token存入到了NSUserDefaults,关于NSUserDefault...= nil) { 16 //获取userDefault单例 17 NSUserDefaults *token = [NSUserDefaults standardUserDefaults...这篇博客作为对之前开发新浪微博做一个总结,记得前面有一篇博客是IOS开发之微信山寨版,其实在这篇博客只有视图间关系,没有具体业务逻辑,接下来一段时间里要完善山寨版微信,并加上实时通讯内容

    59170

    iOS系统相册创建自己App自定义相册

    https://blog.csdn.net/u010105969/article/details/53412473 思路:要创建自己App自定义相册,首先要获取系统所有自定义相册,看这些自定义相册是否已经包含了我们自己要创建自定义相册...注意:iOS创建自定义相册之后并不会给我们返回一个相册对象,还需要我们自己根据一个标识去系统获取我们创建自定义相册。...代码: // 创建自己要创建自定义相册 - (PHAssetCollection * )createCollection{ // 创建一个新相册 // 查看所有的自定义相册 // 先查看是否有自己要创建自定义相册...]; PHAssetCollection * createCollection = nil; // 最终要获取自己创建相册 for (PHAssetCollection * collection...// 创建自己要创建相册 NSError * error1 = nil; __block NSString * createCollectionID = nil;         [[

    2.2K10

    点进来你就懂iOS数据存储

    NSInteger这种根据系统是64位还是32位来判断自己是int类型或者long类型,并且它也不是一个标准OC对象,是不可以用NSUserDefaults来存储。...3、归档 如果说NSUserDefault只能存储常用数据类型,归档则可以存储常用数据类型外自定义对象,并且安全性会高于上面两种方式,数据归档是进行加密(协议方法encode)处理。...通过让存储数据模型遵守NSCoding或NSSecureCoding(iOS 6以后)协议并且实现其两个协议方法使用NSKeyedArchiver对自定义数据对象进行序列化。...私有区不存在指定group可以直接设置为nil即可(类似于系统新建了一个沙盒仅自己APP可访问)。 公有区需要配置keychainSharing。...如果两个相同TeamID开发APPkeychainSharing没有设置相同Group,则图中共享部分不存在。

    2K10

    控制器和应用数据存储

    : //左上角返回按钮 @property(nonatomic, retain) UIBarButtonItem *backBarButtonItem; //中间标题视图 @property(... 偏好设置    3)、NSKeydeArchiver归档(一般用来存储自定义对象)    4)、SQLite(关系型数据库,不能直接存储对象,使用sql语句序列化对象存储)    5)、Core Data...2)、使用偏好设置存储 /* 保存数据到用户偏好设置 */ - (IBAction)saveDataToUserPreference:(id)sender{ NSUserDefaults *ud...OK"; } /* 从用户偏好设置读取数据 */ - (IBAction)readDataByUserPreference:(id)sender{ NSUserDefaults *ud =...3)、使用NSKeyedArchiver对自定义对象进行归档, 使用NSKeyedUnarchiver解析归档对象       首先自定义类需要实现NSCoding协议,然后实现方法      - (void

    79830

    iOS设计模式系列:单例设计模式

    单例设计模式从字面意思上来说,就是一个类系统运行时,只创建一个实例。可以用于需要被多次调用或者多次使用资源。比如我们常见网络请求类、工具类等等。...iOS中大量使用了单例方法,常见有: [NSUserDefaults standardUserDefaults] 轻量级本地数据存储,存储自定义对象,比如保存登陆界面的数据、用户名、密码等。...二、单例要点 该类有且只有一个实例 该类必须能自行创建这个实例 该类必须能够向整个系统提供这个实例 三、单例优缺点 优点: 提供了唯一实例受访对象 因为系统只存在一个实例,频繁访问和调用时,...四、单例类实现 为单例对象创建一个静态实例,可以写成全局,也可以类方法实现,并置为nil。 用GCD多线程方式来实现单例,用dispatch_once_t来保证线程安全性和单一性。...检查生成静态实例是否为nil,若是则创建并返回一个本类实例。 重写allocWithZone方法,用来保证其他人想通过alloc、init方法创建实例时候,不会产生新实例。

    43030

    springboot自定义JavaBean返回json对象属性名称大写变小写问题

    @tocspringboot自定义JavaBean返回json对象属性名称大写变小写问题开发过程中发现查询返回数据出现自定义JavaBean属性值大小写格式出现问题,导致前端无法接受到数据,目前有四种解决方法...具体原因如下图:一、继承类一般vo层(可自行理解,阿里巴巴编程规范)自定义JavaBean来封装数据返回给前端,都是需要用到多表查询,或者有额外属性增加时需要创建。...例如:人javaBean最好方式是继承一个学生javaBean添加新属性,这样再人JavaBean没有问题,学生JavaBean返回数据也是正常,不会出现因为@Data注解导致bug...spring:  jackson:    property-naming-strategy: SNAKE\_CASE五、案例Spring Boot,可以使用Jackson库来自定义JavaBean返回...这样,序列化该对象为JSON时,属性名称将会变成小写。记录每一个学习瞬间

    15510

    实现iOS图片等资源文件热更新化(四): 一个最小化补丁更新逻辑

    从简原因有3: 补丁更新,状态可以设计很复杂,就像开头那篇文章提到那样,但是我感觉没多大必要,至少我们App; 我想演示一个相对完整逻辑,但是又不想耗费太多时间构建场景; 从简后方案,...基本思路 App启动时,判断特定服务器接口所返回图片url是否为最新,判断方式就是比对返回md5字段与本地保存资源url是否一致; 如果图片资源有更新,则下载解压到指定缓存目录,初步打算以资源文件...什么时候更新本地缓存资源相关信息?...可以使用 fileExistsAtPath,但其实使用 -pathForResource: ofType: 就够了,因为找不到资源问加你时,它返回nil,所以我们直接调用它,然后判断返回是否为 nil ...不需要初始复制到缓存目录 + 初始请求最新资源补丁信息 + 代码迁移合并 + 接口优化 相对完整逻辑代码 注意,按照目前设计,就不需要初始把原来ipabundle复制到缓存目录了;当缓存目录没有相关资源时

    1.1K50

    iOS数据持久化之二——归档与设计可存储化数据模型基类

    iOS数据持久化之二——归档与设计可存储化数据模型基类 一、引言         在上一篇博客,我们介绍了用plist文件进行数据持久化方法。...原则上说,无论是什么数据类型对象,系统或者是我们自定义,都可以通过实现这个协议方法来支持归档操作。...(3)进行自定义对象归档         上面介绍中有提到,原则上,任何遵守了NSCoding协议类都可以进行归档操作,那么对于我们自定义对象,我们该如何来做呢?... * count = malloc(sizeof(unsigned int));     //调用runtime方法     //Ivar:方法返回对象内容对象,这里将返回一个Ivar类型指针     ...//class_copyIvarList方法可以捕获到类所有变量,将变量数量存在一个unsigned int指针     Ivar * mem = class_copyIvarList([self

    1.1K30
    领券