实例变量在 iOS 应用程序中不保留值

2023-12-03

我已经在我的声明中声明了这个ivar

视图控制器.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

{   
NSArray *sortedCountries;       
}

@property (nonatomic, retain) NSArray *sortedCountries;

@end

在 ViewController.m 中,排序后的国家/地区执行其工作-(void)ViewDidLoad{}通过存储排序的 .plist 的结果。

When

-(UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {}

下面调用,sortedCountries 返回(null)

为什么sortedCountries的值没有保留?我添加了一个retain在第一个函数中...我想我在这里缺少一个基本的 Objective-C 租户。

视图控制器.m

#import "FirstViewController.h"

@implementation FirstViewController

@synthesize sortedCountries;

-(void)viewDidLoad  {

NSString *path = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"plist"];  
NSArray *countries = [NSArray arrayWithContentsOfFile:path];
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease];
NSArray *sortedCountries = [[countries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]retain];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

-(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {

return 236; 
}

-(UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {

NSDictionary *country = [sortedCountries objectAtIndex:indexPath.row];
NSLog(@"countryDictionary is: %@",country);
NSString *countryName = [country objectForKey:@"name"];
NSLog(@"countryName is : %@", countryName);

    static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:CellIdentifier] autorelease];

}

cell.textLabel.text = countryName;
return cell;
} 

NSArray *sortedCountries = [[countries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]retain];

to

self.sortedCountries = [countries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例变量在 iOS 应用程序中不保留值 的相关文章

随机推荐

  • 回归:导出的 Bash 函数在经过另一个过程后丢失

    从 Ubuntu 14 04 迁移到 16 04 时 我注意到我的几个 Bash 脚本由于缺少导出函数而失败 我想知道这是否与修复有关炮弹休克虫 尽管我只是简单地export f函数 而不依赖于 Bash 内部函数表示 仅当中间有另一个进程
  • 如何解决android studio中的gradle冲突?

    Please find my gradle file below 正如您所看到的 它显示红色 如果我将光标放在那里 我会得到提示 所有 com android support 库必须使用完全相同的版本规范 找到 com android su
  • 从asp.net代码获取某个网站的源代码

    有没有什么方法可以让我从 asp net 网站代码后面的一些 C 代码获取网站的源代码 最好是字符串 比如说 www google com 编辑 当然 我的意思是 html 代码 在每个浏览器中 您可以使用 viewsource 在上下文菜
  • 在 .net core、xUnit 项目中获取代码覆盖率

    我正在尝试使用以下方向的指示来获取 net core 项目中的代码覆盖率https github com Microsoft vstest docs blob master docs analyze md working with code
  • 从周日开始获取一周的问题

    以下是我创建的用于将星期日作为一周的开始日的函数 function getCurrentIntervalOfWeek liveratetime get start of each week dayofweek date w liverate
  • 变量仅在 for 循环内本地分配[重复]

    这个问题在这里已经有答案了 我正在做第一个 Kaggle 挑战 我对这种行为感到惊讶 组合由两个pd DataFrame组成 一个是训练集 另一个是测试集 我想删除两列 因此我创建了一个 for 循环来迭代组合中的项目 for datase
  • Python库“unittest”:以编程方式生成多个测试[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Python 中生成动态 参数化 单元测试 我有一个功能要测试 under test 以及一组预期的输入 输出对 2 332 234 99213 9 3 我希望这些输入 输出对中的每一对都单独
  • 如何将一组形状保存为 JPG 图像?

    我使用 VBA 在图像上放置了多个形状 并希望将整个组保存为 JPG Sub SaveImageTEST ActiveSheet Shapes Range Array Picture 1 SaveAsPicture worldmap jpg
  • Oracle语法左连接三个或更多表

    我正在尝试了解旧的 Oracle Left Join 语法 有两个表就可以了 FROM A B WHERE A Col B Col 我们将此查询称为 Q0 这很容易理解 例如和这个维恩diagram 但是 当我们添加第三个或更多表时 我的大
  • 使用程序进行短路评估

    我目前正在为一种非常有限的面向对象语言开发编译器 我想将所有值视为对象 并且这些值上的运算符将作为方法实现 编译器将程序转换为基于堆栈的虚拟机的汇编程序 在编译期间 我将整数文字转换为特殊 Integer 类的对象 算术运算符作为该类的方法
  • 错误:格式 %d 需要 int 类型,但参数 2 的类型为 double(*)(int, int)

    我似乎无法在 printf 语句中找出这个错误 每当我将格式说明符从整数更改为浮点时 反之亦然 我都会得到相同的错误 error format f expects type double but argument 2 has type do
  • 将 pandas 列从字符串季度和年份数组转换为日期时间列,其中列内存在混合格式

    这是我之前提出的问题的延伸 将 pandas 列从字符串 Quarters 和 Years 数组转换为日期时间列 我有一个像这样的数据框 其中日期混乱 我想将它们转换为日期时间对象 So 3Q 11会成为2011 09 30 Q1 20会成
  • 带有命名出口的 Angular 2/4 路由?

    我正在尝试在我的应用程序中实现命名出口 这是我的路线配置 path contact children path component ContactComponent pathMatch full path list component Co
  • 在哪里可以找到 python 标准库代码?

    我想尝试查找Python标准库中某些模块的源代码 但未能找到它们 下载 python tarball 后 我尝试查看模块目录 但它主要包含 c 文件 我还尝试查看操作系统 mac osx 附带的 python 的模块目录 其中似乎主要有 p
  • Richfaces 4 组件不渲染

    我遇到的问题是 jsf 标签没有被解析 所以我在页面中没有看到 richfaces 组件 我正在使用 richfaces 4 tomcat 7 和 jsf 2 0 这是我的 faces config xml
  • Java 警告:[未检查] 未检查的转换

    我有以下 部分 课程 public class Graph
  • Java lambda 表达式和内存分配

    假设我们有这样的三种方法 它们的作用都是相同的 但是它们在内存分配和效率方面有何不同 方法一将在每次调用期间创建 Function 实例 但第二个方法会做同样的事情吗 是否应该始终使用第三个版本 或者任一版本都是安全的并且 JIT 编译器将
  • GIT refs/heads/master 未指向有效对象

    这是我的问题 我创建了一个名为 project 的新 git 存储库 里面有一些文件 我使用以下命令克隆该存储库 git clone bare project project git 吉特告诉我 Cloning into bare repo
  • 无法反序列化当前 JSON 数组(例如 [1,2,3])。 C#,无法找出错误

    我正在尝试从以下 json 数据中检索所有名称并将其放入文本框中 这是 json 数据 我缩短了一些值以使其更易于阅读 但这不会影响问题 id LEA name Limited Edition Alpha block null type C
  • 实例变量在 iOS 应用程序中不保留值

    我已经在我的声明中声明了这个ivar 视图控制器 h import