Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
Iphone Can';t获取NSString ivar以接受数组中的值_Iphone_Nsstring_Ivars - Fatal编程技术网

Iphone Can';t获取NSString ivar以接受数组中的值

Iphone Can';t获取NSString ivar以接受数组中的值,iphone,nsstring,ivars,Iphone,Nsstring,Ivars,我将一些数据(一些浮点、一些字符串)存储到plist中,然后将它们读回。当我读回它们时,我将它们分配给视图控制器中的一些IVAR。它们只是IVAR,而不是属性 浮点数取它们的值很好,我可以NSLog查看它们是否正确。但不管我怎么做,我都无法让我的NSString IVAR获取字符串值 示例:数组位置6和7中存储了字符串Portland或“和太平洋夏令时”——从plist读回*数组。 这: 结果如下: >cityName from array = Portland, OR, and now

我将一些数据(一些浮点、一些字符串)存储到plist中,然后将它们读回。当我读回它们时,我将它们分配给视图控制器中的一些IVAR。它们只是IVAR,而不是属性

浮点数取它们的值很好,我可以
NSLog
查看它们是否正确。但不管我怎么做,我都无法让我的NSString IVAR获取字符串值

示例:数组位置6和7中存储了字符串
Portland或“
太平洋夏令时”
——从plist读回
*数组。

这:

结果如下:

>cityName from array = Portland, OR, and now the iVar is = 
>timeZoneName from array = Pacific Daylight Time, and now the iVar is = 
我在发生这种情况的方法末尾放置了一个断点,对于
NSString
ivar,小弹出消息说,
无效摘要。

cityName = [NSString stringWithFormat:@"%@", [array objectAtIndex:6]];
错误在于缺少格式说明符。但是,如果数组中的对象已经是字符串,则可以直接将它们分配给ivar:

cityName = [array objectAtIndex:6];
但要注意对象所有权。您不拥有由
objectAtIndex:
返回的对象,因此如果您需要以多种不同的方法使用此ivar,请通过发送
retain
获得所有权,并使用
release
放弃所有权。或者,如果您选择将
cityName
建立为保留或复制类的属性,请使用点表示法或访问器方法:

self.cityName = [array objectAtIndex:6];

// or

[self setCityName:[array objectAtIndex:6]];
错误在于缺少格式说明符。但是,如果数组中的对象已经是字符串,则可以直接将它们分配给ivar:

cityName = [array objectAtIndex:6];
但要注意对象所有权。您不拥有由
objectAtIndex:
返回的对象,因此如果您需要以多种不同的方法使用此ivar,请通过发送
retain
获得所有权,并使用
release
放弃所有权。或者,如果您选择将
cityName
建立为保留或复制类的属性,请使用点表示法或访问器方法:

self.cityName = [array objectAtIndex:6];

// or

[self setCityName:[array objectAtIndex:6]];
下面使用

cityName = [NSString stringWithFormat:@"%@", [array objectAtIndex:6]];
您需要将%d或%i用于整数,而%@用于字符串对象。

请在下面使用

cityName = [NSString stringWithFormat:@"%@", [array objectAtIndex:6]];

您需要对整数使用%d或%i,%@用于字符串对象。

如果数组包含
NSString
实例,则无需调用
+stringWithFormat:
。这会浪费CPU周期,并会撤消与不可变字符串相关的任何潜在优化。此外,依赖
描述的结果option
从来都不是正确的答案(尽管对于nsstring来说这几乎是不可避免的——这是一个可以依赖结果的地方)

此(固定):

可以是:

cityName = [array objectAtIndex:6];
timeZoneName = [array objectAtIndex:7];

如果需要,请复制它。正如@dreamlax所说,请确保遵循内存管理规则。

如果数组包含
NSString
实例,则无需调用
+stringWithFormat:
。这会浪费CPU周期,并会撤消与不可变字符串相关的任何潜在优化。此外,依赖于结果
description
的ts从来都不是正确的答案(尽管对于nsstring来说这几乎是不可避免的——这是一个可以依赖结果的地方)

此(固定):

可以是:

cityName = [array objectAtIndex:6];
timeZoneName = [array objectAtIndex:7];

如果需要,请复制它。正如@dreamlax所说,请确保遵循内存管理规则。

%@
用于实现
说明
方法(在NSObject中实现)的任何类它也适用于核心基础类型,放置的文本是从 CFCopyScript < /C> >方法获得的。代码行正确,答案不是。也不建议“代码>描述/代码>在生产代码中是可接受的;它不是。永远不依赖于<代码>描述< /代码>。<代码> %@ < /代码>用于A。实现
description
方法(在NSObject中实现)的ny类它也适用于核心基础类型,放置的文本是从 CFCopeDebug < /C>方法获得的。代码行正确,答案不是。也不建议“代码>描述/代码>在生产代码中是可接受的;它不是。永远不要依赖<代码>描述< /代码>。太尴尬了!我需要。一些睡眠。它不是一个属性,只是标题中声明的ivar。我将在视图控制器的生命周期(应用程序的生命周期)中使用它,因此我将直接将它设置为数组中的对象,并像
cityName=[[array objectAtIndex:6]retain]一样保留它
我只需要在
dealloc中释放它,
对吗?@Steve:这只是事后想一想,当您在不使用setter/getter/properties的情况下手动处理ivar的内存管理时,您只需要格外小心。如果您多次将对象分配给
cityName
ivar,而不首先释放以前的值e、 你最终会泄漏一点内存。你是说如果我把它作为一个属性,我可以多次更改它的值,然后在dealloc中释放它吗?@Steve:是的,但前提是你使用我回答中的任何一种方法分配给该属性。那太尴尬了!我需要一些睡眠。它不是属性,只是标题中声明的ivar。我将在视图控制器的生命周期(应用程序的生命周期)中使用它,因此我将直接将其设置为数组中的对象,并像
cityName=[[array objectAtIndex:6]retain]一样保留它
我只需要在
dealloc中释放它,
对吗?@Steve:这只是事后想一想,当您在不使用setter/getter/properties的情况下手动处理ivar的内存管理时,您只需要格外小心。如果您多次将对象分配给
cityName
ivar,而不首先释放以前的值e、 你最终会泄漏一点内存。你是说如果我把它作为一个属性,我可以多次更改它的值,然后在dealloc中释放它吗?@Steve: