Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS/目标C:访问布尔属性_Ios_Objective C_Properties_Boolean - Fatal编程技术网

IOS/目标C:访问布尔属性

IOS/目标C:访问布尔属性,ios,objective-c,properties,boolean,Ios,Objective C,Properties,Boolean,语法问题: 我获取并访问用户键入的文本值,如下所示: 在.h文件中 @property (strong, nonatomic) IBOutlet UITextField *textField; (这是连接到文本框的) 在.m文件中 NSString *name = self.textField.text; 对于从开关获得的布尔值,我将如何执行相同的操作 在.h文件中,我有: @property (strong, nonatomic) IBOutlet UISwitch *pubField;

语法问题:

我获取并访问用户键入的文本值,如下所示:

在.h文件中

@property (strong, nonatomic) IBOutlet UITextField *textField;
(这是连接到文本框的)

在.m文件中

NSString *name = self.textField.text;
对于从开关获得的布尔值,我将如何执行相同的操作

在.h文件中,我有:

@property (strong, nonatomic) IBOutlet UISwitch *pubField;
在.m文件中,我遇到了一个错误

BOOL *pub = self.pubField.text;
as.text不是布尔或UI开关的有效属性

当然,我正在使用

@property (nonatomic, assign) BOOL * pub;
在我的数据模型中,如果这有区别的话


感谢您提供正确的语法。

您使用的是指向原语的指针。这几乎没有必要或不可取。正确的声明是:

@property (nonatomic, assign) BOOL pub;
您的问题中的以下行有错误:
BOOL*pub=self.pubField.text。您应该指定
BOOL
而不是指向它的指针(
*pub
表示“指向pub的指针”,用于对象,而不是原语)。第二个
ui开关
没有属性
text
。将
UISwitch
命名为“pubField”会让人困惑

这是如何从交换机获取布尔值(基于上述声明):

在核心数据的上下文中,您可能希望使用普通的核心数据约定,将所有布尔值设置为
NSNumber

@property (nonatomic, strong) NSNumber *pub;


对于任何阅读本文的人,我的工作如下:

首先,您应该将数据模型文件中的所谓布尔字段视为NSNumber。布尔只是他们给它的一个别名。在幕布后面,它只是一个数字

控件是一个开关,要指示值为True的开关的属性是.isOn,但需要使用numberWithBool转换.isOn值,以获取需要存储在数据库中的NSNumber

.on和.isON之间的区别在于,第二个表示它实际上为真,而第一个表示它的值为真或假。所以要测试它是否为真,是的,1,开,等等,你要检查

因此,我的问题的答案如下:

在.h文件中,请使用:

NSNumber *pub = [NSNumber numberWithBool:self.pubField.isOn];
@性质(弱、非原子)IBUISwitch*pubField

连接到开关控制。和我写的问题唯一的区别是弱和强

在.m文件中使用:

NSNumber *pub = [NSNumber numberWithBool:self.pubField.isOn];
最后,您可以在模型中将实体中的pub属性指定为“boolean”类型,但数据模型实体的nsobject属性应为NSNumber


@属性(非原子,强)NSNumber*pub

BOOL
是一种基本类型。您不希望在属性声明或任何其他
BOOL
变量声明中使用星号。我使用后缀字段,因为所有这些都是进入字段的值,即核心数据中的属性。实现IOS术语与数据库术语不同,但最终核心数据会进入与服务器上的数据库同步的数据库。原语类型是否足以处理来自开关的值,即ON或我应该使用对象?它是合适的。但是,Xcode会自动生成对象,这些对象是
NSNumber
。我将编辑我的答案以显示这是如何完成的。我正在使用键值存储在数据库中,即[record setValue:pub forKey:@“pub”];如何将pub设置为开关中的值,使其正确保存?与上面一样,值为
@(switch.on)
。调用
UISwitch
pub字段不会造成混淆。在大多数编码标准中,向变量名添加“type”实际上是不受欢迎的<代码>开关
考虑到它是一个关键词,肯定是一个非常糟糕的名字。在所有其他方面,我更喜欢这个答案,而不是公认的解释非常混乱的答案。
NSNumber *pub = [NSNumber numberWithBool:self.pubField.isOn];