setvalue_setvalue和setobject的区别 - CSDN
精华内容
参与话题
  • 老生常谈的问题了。许多新手还是不懂。 ... setObject:forkey:中value是不能够为nil的,不然会报错。... setValue:forKey: 中value能够为nil,但是当value为... setValue:forKey:中key的参数只能够是NSStri

    老生常谈的问题了。许多新手还是不懂。


    【1】

      setObject:forkey:中value是不能够为nil的,不然会报错。

      setValue:forKey: 中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法

    【2】

      setValue:forKey:中key的参数只能够是NSString类型;

     而setObject:forKey:的可以是任何类型


    注意:

    上面说的区别是针对调用者是dictionary而言的。

    setObject:forKey:方法NSMutabledictionary特有的,

    setValue:forKey:方法是KVC(键-值编码)的主要方法。


    当 setValue:forKey:方法调用者是对象的时候:

    setValue:forKey:方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以用于任何类。

    比如使用:

    SomeClass *someObj = [[SomeClass alloc] init];

    [someObj setValue:self forKey:@"delegate"];

    表示的意思是:对象someObj设置他的delegate属性的值为当前类,当然调用此方法的对象必须要有delegate属性才能设置,不然调用了也没效果



    展开全文
  • setValue和setObject的区别

    万次阅读 多人点赞 2013-04-04 12:40:13
    在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有。 1,先看看setValue: forKey:的定义 @interface NSMutableDictionary...

    在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有。

    1,先看看setValue: forKey:的定义

    @interface NSMutableDictionary(NSKeyValueCoding)

    /* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObject:forKey:.

    */

    - (void)setValue:(id)value forKey:(NSString *)key;

    @end

    扩展NSMutableDictionary的一个类别,上面注释说的很清楚,发送setObject:forKey 给接收者,也就是调用setObject:forKey方法

    除非value为nil的时候,调用方法removeObject:forKey


    2,看看setObject:forKey:的定义

    @interface NSMutableDictionary :NSDictionary

    - (void)removeObjectForKey:(id)aKey;

    - (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;

    @end

    注意:setObject:forKey:中Key的对象是一个id类型,并不是NSString,只不过我们经常使用NSString而已。


    现在总结他们2者的区别就是:

    1, setObject:forkey:中value是不能够为nil的,不然会报错。

    setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法

    2, setValue:forKey:中key的参数只能够是NSString类型,而setObject:forKey:的可以是任何类型


    注意:setObject:forKey:对象不能存放nil要与下面的这种情况区分:

    1, [imageDictionarysetObject:[NSNullnull] forKey:indexNumber];

    [NSNull null]表示的是一个空对象,并不是nil,注意这点


    2, setObject:forKey:中Key是NSNumber对象的时候,如下:

        [imageDictionarysetObject:obj forKey:[NSNumber numberWithInt:10]];


    注意:

    上面说的区别是针对调用者是dictionary而言的。

    setObject:forKey:方法NSMutabledictionary特有的,

    setValue:forKey:方法是KVC(键-值编码)的主要方法。


    当 setValue:forKey:方法调用者是对象的时候:

    setValue:forKey:方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以用于任何类。

    比如使用:

    SomeClass *someObj = [[SomeClass alloc] init];

    [someObj setValue:self forKey:@"delegate"];

    表示的意思是:对象someObj设置他的delegate属性的值为当前类,当然调用此方法的对象必须要有delegate属性才能设置,不然调用了也没效果





    展开全文
  • GetValue和SetValue是在托管代码中直接获取或设置对象属性的一种方法,如下面例子: &lt;Rectangle x:Name="rect_MyRectangle" Width="100" Height="100" Fill="Blue"...

    GetValue和SetValue是在托管代码中直接获取或设置对象属性的一种方法,如下面例子:

    <Rectangle x:Name="rect_MyRectangle" Width="100" Height="100" Fill="Blue"></Rectangle> <TextBlock x:Name="txb_MyText2" />


    C#代码:

    public yufa2()
            {
                InitializeComponent();//利用GetValue和SetValue
                double left = 400;
                double top = 30;
                double radius = 10;
                string width;
                string height;
                //设置矩形的位置
                rect_MyRectangle.SetValue(Canvas.LeftProperty, left);
                rect_MyRectangle.SetValue(Canvas.TopProperty, top);
                //设置矩形的圆角度
                rect_MyRectangle.SetValue(Rectangle.RadiusXProperty, radius);
                rect_MyRectangle.SetValue(Rectangle.RadiusYProperty, radius);
                //获取矩形的宽和高
                width = rect_MyRectangle.GetValue(Rectangle.WidthProperty).ToString();
                height = rect_MyRectangle.GetValue(Rectangle.HeightProperty).ToString();
                //输出文本
                txb_MyText2.Text = "矩形的宽是:" + width + " 高是:" + height;
                txb_MyText2.SetValue(Canvas.LeftProperty, 400.00);
            }

    
    

    运行如图:


    展开全文
  • 今天在尝试用_winreg来改注册表的时候,发现用setValue不能顺利的改变, 但是用SetValueEx可以, 于是搜集了一下这两个方法的关系:_winreg.SetValue(key, sub_key, type, value)¶ Associates a value with a ...

    今天在尝试用_winreg来改注册表的时候,发现用setValue不能顺利的改变, 但是用SetValueEx可以, 于是搜集了一下这两个方法的关系:

    _winreg.SetValue(key, sub_key, type, value)¶

        Associates a value with a specified key.

        key is an already open key, or one of the predefined HKEY_* constants.

        sub_key is a string that names the subkey with which the value is associated.

        type is an integer that specifies the type of the data. Currently this must be REG_SZ, meaning only strings are supported. Use the SetValueEx() function for support for other data types.

        value is a string that specifies the new value.

        If the key specified by the sub_key parameter does not exist, the SetValue function creates it.

        Value lengths are limited by available memory. Long values (more than 2048 bytes) should be stored as files with the filenames stored in the configuration registry. This helps the registry perform efficiently.

        The key identified by the key parameter must have been opened with KEY_SET_VALUE access.

    _winreg.SetValueEx(key, value_name, reserved, type, value)¶

        Stores data in the value field of an open registry key.

        key is an already open key, or one of the predefined HKEY_* constants.

        value_name is a string that names the subkey with which the value is associated.

        type is an integer that specifies the type of the data. See Value Types for the available types.

        reserved can be anything – zero is always passed to the API.

        value is a string that specifies the new value.

        This method can also set additional value and type information for the specified key. The key identified by the key parameter must have been opened with KEY_SET_VALUE access.

        To open the key, use the CreateKey() or OpenKey() methods.

        Value lengths are limited by available memory. Long values (more than 2048 bytes) should be stored as files with the filenames stored in the configuration registry. This helps the registry perform efficiently.

    展开全文
  • iOS setValue和setObject的区别

    千次阅读 2017-02-07 10:52:48
    网上关于setValue和setObject的区别的文章很多,说的并不准确,首先我们得知道: setObject:ForKey: 是NSMutableDictionary特有的;setValue:ForKey:是KVC的主要方法 话不多说,上代码: - (void)viewDidLoad { [super ...
  • LiveData setValue和postValue的区别及详解

    千次阅读 2020-10-17 12:24:37
    LiveData是谷歌官方主推JetPack中的组件之一。如果没有学习的同学可翻阅google官方资料 平时我们使用LiveData的时候,需要更新数据的时候,LiveData...setValue()只能在主线程中调用,postValue()可以在任何线程...
  • 因为你在setValue(value)之后还要写一行代码  response.addCookie(cookie); 下面是一个简单的servlet,当我没有加上面的那句话的时候,cookie的值一直不更新,加上去就更新了. CookieUtil是我写的一个工具类,也粘在...
  • Angular 4 表单 patchValue and setValue

    千次阅读 2018-06-28 11:45:53
    https://www.jianshu.com/p/440bff840065在 Angular 4 中有多种方式可以更新表单的值,对于使用...这篇文章我们将介绍如何使用 patchValue 和 setValue 方法更新表单的值,此外还会进一步介绍它们之间的差异。React...
  • Angular 响应式表单 patchValue和setValue

    千次阅读 2019-01-18 17:10:59
    在 Angular 4 中有多种方式可以更新表单的值,对于使用响应式表单的场景,我们可以通过框架内部提供的 API ,(如 patchValue 和 setValue )方便地更新表单的值。这篇文章我们将介绍如何使用 patchValue 和 setValue ...
  • query.record().setValue(column,previous->text()); } } //这里的db是QDatabase类型的数据库对象 已经确认数据库正确连接,而且可以使用query.exec()执行更新的SQL语句没有问题.为什么setValue会没有效果
  • Objective-C语法之KVC使用 除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性。 下图来自苹果官网:   如何使用KVC存取对象属性呢?...@int
  • field.SetValue(model, value)出错了

    千次阅读 2017-03-22 12:53:17
    from:https://q.cnblogs.com/q/3195/ 我有一个类如下  public class Employee  {  Guid? Id = null;  int? salary = null; // 数据库里对应的类型为SmallInt型 ... /// 员工编号
  • ExtJS4 中 setValue和getValue 的问题

    千次阅读 2017-01-06 16:49:52
    ExtJS4 中 setValue和getValue 的问题 将后台传过来的json进行转换后放到页面相应的框内  Ext.Ajax.request({  method : 'POST',  
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 它在NSKeyValueCoding.h文件中    - (void)... 这个方式是通过一个字典给对象的属性进行赋值,不需要我们一个一个的手动的调用 -(void) setValue:(id)value forKey:(NSString *)key给属性赋值,它
  • 在一次jsp页面加载json,在动态的生成Html页面后,想设置生成的html页面的下拉选框的值,结果怎么试都失败了。 $(function(){  var membersJson='&lt;s:property value="membersJson"...
  • Registry类的SetValue和GetValue详解
  • setValue:forUndefinedKey

    2013-10-15 09:54:48
    使用 Storyboard 创建并管理 UI 时,在运行 app 的时候出现了 2013-10-15 09:21:03.212 TestMSR[610:11303] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:...
  • setValue: forKeyPath:

    千次阅读 2015-08-07 11:00:00
    通过 setValue: forKeyPath: 这个方法来设置一些属性信息   UITextField *textfield = [UITextField new]; [textfield setValue:[UIColor redcolor] forKeyPath:@"_placeholderLabel.textColor"]; ...
  • iOS setObject与setValue的区别详解

    千次阅读 2018-03-15 16:59:57
    在我们平时的编程经历中用了许多的setObject:forKey: 与setValue: forKey。平时用的时候一般不会注意这两个方法有什么区别,有什么共同点,下边来look look。1.在Xcode中cmd点进去看官方定义,可以发现,两个方法...
1 2 3 4 5 ... 20
收藏数 139,748
精华内容 55,899
关键字:

setvalue