修改readonly属性的值
一般情况下,readonly属性的值是无法修改的,但可以通过特殊方式修改。
定义一个student的类,其中name属性为readonly类型的变量
@interface JFStudent : NSObject@property(nonatomic,copy,readonly) NSString *hisName;@property(nonatomic,copy) NSString *age;-(instancetype)initWithName:(NSString *)name age:(NSString *)age;@end
@implementation JFStudent-(instancetype)initWithName:(NSString *)name age:(NSString *)age{if (self = [super init]) {_hisName = name;_age = age;}return self; }@end
然后定义一个JFStudent类型的变量
JFStudent *stu = [[JFStudent alloc]initWithName:@"tom" age:@"11"]; NSLog(@"修改前++++++++%@",stu.hisName);
修改hisName变量,会提示出错。
这时可以用kvc来设置
[stu setValue:@"胡说" forKey:NSStringFromSelector(@selector(hisName))]; NSLog(@"修改后----------------%@",stu.hisName);
打印结果为:
若age为NSInteger属性,
@property(nonatomic,assign,readonly) NSInteger age;
则可以用
[stu setValue:@(20) forKey:NSStringFromSelector(@selector(age))];
打印结果为
若想禁止kvc修改readonly属性的值,则可以在定义readonly属性的类中添加该方法
//默认返回为YES,表示可允许修改。改为NO即可 +(BOOL)accessInstanceVariablesDirectly{return NO; }
转载于:https://www.cnblogs.com/Apologize/p/6306690.html
修改readonly属性的值相关推荐
- python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...
- jquery attr(“xxx“,“mmm“)修改标签属性的值
jquery attr("xxx","mmm")修改标签属性的值 详细讲解
- Selenium2+python自动化25-js处理日历控件(修改readonly属性)
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
- vue修改计算属性的值_Vue语法高级之计算属性和侦听器
计算属性和侦听器都可以监听到data区数据的变化,当数据变化时可以触发方法的调用,从而在方法内部可以进行相应的逻辑处理. 计算属性的语法格式是:computed: {} 侦听器的语法格式是:watch ...
- vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器
1: 计算属性: (内置缓存机制) 当更改age的时候, fullName 函数不执行: 当更改fristName的时候, fullName 函数才执行 <div id = "app& ...
- js获取html元素并且修改属性,JavaScript中获取和修改元素属性的值
在上一篇关于<JavaScript中几个操作元素对象的函数方法>文章中记录了分别通过元素的ID属性,元素的标签名,Class类名来获取元素的节点对象. 今天记录两个函数可以用来获取和修改获 ...
- Python+selenium自动化-js处理日历控件(修改readonly属性)
前言 今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件 基本思路:先用js去掉readonly属 ...
- pythongui日历控件_Selenium2+python自动化25-js处理日历控件(修改readonly属性)
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
- python时间控件readonly属性_Selenium2+python自动化----js处理日历控件(修改readonly属性)...
前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...
最新文章
- 那些做了多少次错了多少次的题目
- Linux下简单的系统调用
- oracle绑定主键,oracle添加主键的四种方法:
- javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
- iOS打开沙盒html,iOS WKWebView加载本地/沙盒HTML及css、images
- 计算机史话 —— 回车和换行 与 文本文件和二进制文件
- 【转】Java杂谈(八)--Servlet/Jsp
- php类似indexof的方法[转]
- PTA程序设计基础6 7-1 列表排序、逆序 (10 分)C语言解法
- cuteFTP使用教程
- pandas读取文件自动生成表头
- mysql中可以查询英文却查不了中文或数字
- 伦敦的威斯敏斯特大教堂地下室的墓碑林中,一块震撼全世界的一段碑文。
- 解决active样式在ios手机上没有生效的问题
- BCB数据库问题总结
- 【CVPR2021】AdderSR: Towards Energy Efficient Image Super-Resolution
- 报告称苹果应用商店逾千款应用存在漏洞
- EC-PCA: 利润中心主数据维护流程
- 推荐一位我的朋友,艾小仙,前阿里巴巴技术专家P7
- sklearn进行垃圾邮件分类
热门文章
- 主流 .NET界面控件套包对比介绍
- esxi6.7虚拟机无法开机,提示“没有更多空间可供虚拟磁盘server-000001.vmdk使用。也许通过释放相关卷上的磁盘空间并单击 重试 继续此会话,单击 取消 可终止此会话”
- 切换IP地址的小工具
- 元征科技Golo3 硬件拆解分析报告——榕树投资研究员.杜志君(2014-07-21
- xyz三维坐标系怎么画?
- 计算机保研经验(中科大、北航、成电、西交、南大)
- show()方法和hide()方法
- c++ 11 thead
- [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记
- 此计算机策略设置不允许安装win,Win10设置了系统策略禁止进行此安装怎么解决?...