gpt4 book ai didi

iphone - 如何从 NSObject 获取 NSString 变量值到 ViewController

转载 作者:可可西里 更新时间:2023-11-01 05:38:48 26 4
gpt4 key购买 nike

我正在尝试设置一个对象来控制我的所有数据,这样它就可以在后台进行设置,使我的表格 View 加载速度比现在快等等。

这就是我想要达到的目标。

enter image description here

当像这样选择 tableviewcell 时,我在 secondVC 的 NSObject 中设置一个变量:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Access selected cells content (cell.textLabel.text)
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

//Parent view logic (sends info back to the correct cell in parent view)
if (parentViewSelectedIndexPath.section == 0)
{
if (parentViewSelectedIndexPath.row == 0)
{
//Predicates restrict the values that will be returned from the query
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"MANUFACTURER",cell.textLabel.text];
NSArray *filterArray = [myDataArray filteredArrayUsingPredicate:predicate];
//[[self delegate] setManufactureSearchFields:filterArray withIndexPath:indexPath]; //This is where I pass the value back to the mainview
//Using Object
VehicleControllerNSObject *vehicleControllerNSObject = [[VehicleControllerNSObject alloc] init];
[vehicleControllerNSObject setFirstCell:filterArray];

}
//etc

最后,您可以看到在 VechicleControllerNSObject 中设置的方法,如下所示。

-(void)setFirstCell:(NSArray *)array{

manufactureSearchObjectStringFVC = [[array valueForKey:@"MANUFACTURER"] objectAtIndex:0];
NSLog(@"%@", manufactureSearchObjectStringFVC); // this prints the correct value to the console
}

如您所见,这会打印出正确的输出。

但是我不知道如何调用 manufactureSearchObjectStringFVC 并将它保存的值传递到 uitableviewcell,我想将它传递到我的 firstviewcontroller。

这是我用来测试 atm 的东西。

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

VehicleControllerNSObject *vehicleControllerNSObject = [[VehicleControllerNSObject alloc] init];
manufactureSearchObjectString = vehicleControllerNSObject.manufactureSearchObjectStringFVC;
NSLog(@"%@", vehicleControllerNSObject.manufactureSearchObjectStringFVC);

}

nslog 打印 null..

我有三个问题

1、如何将正确的值放入第一个值 Controller 。

2,我应该像这样使用 viewDidAppear 吗?..我不这么认为..我怎样才能做得更好

3,你认为这是做这类事情的好方法吗,因为在未来我想使用 NSObjectClass 来解析信息,缓存等一切都在感官之后,让 View 只在数据出现时显示准备就绪,希望有助于提高性能..

任何帮助将不胜感激,因为我真的很想学习这些东西,因为我知道它对我来说很重要。

最佳答案

您的问题的格式和图表都非常漂亮、清晰,以至于让您进行搜索似乎是一种耻辱。但这里是:

Search for Sharing Data between View Controllers

您会发现很多关于在 View Controller 之间共享数据的讨论。

不过,我可以简单地告诉您为什么您的代码无法正常工作。在您的 tableView:didSelectRowAtIndexPath: 方法中,您正在创建 (alloc/init) new VehicleControllerNSObject 实例每次上课。然后回到您在 viewDidAppear 上的第一个 View Controller :,您再次创建 (alloc/init) 每次都是一个全新的实例。

所以你有多个对象来来去去,它们之间没有任何关系。这有点像在公交车站向一个人提供一些重要信息,然后随机挑选另一个人并试图从她那里检索相同的信息。

因此,一个快速的想法是只创建一次 VehicleControllerNSObject 实例(顺便说一句,对于一个类来说,这有点奇怪,因为通常所有 objective-c 对象是 NSObject 的后代。我现在只是调用它 VehicleController)

假设您想要一个 VehicleController 的“sharedInstance”。您可以向 VehicleController 添加一个类方法,以提供一种轻松获取该 sharedInstance 的方法:

+(VehicleController*)sharedInstance {

static VehicleController *sharedInstance_ = nil;

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{

sharedInstance_ = [[VehicleController alloc] init];
});

return sharedInstance_;
}

因此,要在其他类的方法中获取该实例,您只需执行以下操作:

VehicleController *sharedController = [VehicleController sharedInstance];
sharedController.someProperty = someValue;

// and then back in your first view controller, similarly:
VehicleController *sharedController = [VehicleController sharedInstance];
id someValue = sharedController.someProperty;

再次,查一查,很多人都对此进行了很好的讨论。这只是一种方法。我希望它至少能解释为什么您的代码无法正常工作。

希望对您有所帮助。

关于iphone - 如何从 NSObject 获取 NSString 变量值到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com