• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 View Controller 之间传递核心数据项

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:15:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在制作一个需要核心数据来存储一些信息的应用程序,我已经设法让该应用程序创建实体并添加信息,但是我无法对其进行编辑

我有一个 ListView Controller ,它显示此信息的简要大纲,另一个 ListView Controller 充当模态视图以允许用户编辑他们的信息。

当用户点击列表项时,我需要应用程序显示模态视图 Controller ,其中所选信息从核心数据模型加载到相关文本框中,并且当用户单击保存时,我需要保存更改

当用户点击列表项时,信息没有传递到模态视图中,NSLog 向我确认 - 它告诉我我在 prepareForSegue: 方法中点击的项目,并且在模态视图的 viewDidLoad 中为空:

代码如下:

这是来自 MedsList View Controller ,它显示信息

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath
}   //selMed declared at top of file as NSManagedObject *selMed;
    selMed = [self.meds objectAtIndex:indexPath.row];
    NSLog(@"SELECTED MED: %@",[selMed valueForKey"name"] );
    UIStoryboardSegue *segueString = [NSString stringWithFormat"%@",@"editMeds"];

    NSLog(@"%@",segueString);

NSLog(@"%@ %@", @"MED NAME",[self.meds objectAtIndex:indexPath.row]);

[self performSegueWithIdentifier"editMeds" sender:indexPath];

}

-(void) prepareForSegueUIStoryboardSegue *)segue senderid)sender{

if ([segue  isEqual: @"editMeds"]) {

NSLog(@"%@ %@", @"SELMED AT PREPARE FOR SEGUE: ",selMed);
UINavigationController *nav = segue.destinationViewController;
MedsEditViewController *dest = (MedsEditViewController *)nav.topViewController;
    dest.med = selMed;
    dest.chName = [selMed valueForKey"name"];//chosen med's name
}

    }
}

这里是 MedsEdit.m

#import "MedsEditViewController.h"
#import "fibroMappAppDelegate.h"
#import <CoreData/CoreData.h>

@interface MedsEditViewController ()
{
    NSManagedObjectContext *context;
}
@end

@implementation MedsEditViewController


@synthesize tbName;
@synthesize tbDose;
@synthesize tbMaxDose;
@synthesize tbType;
@synthesize med;
double dose;
double maxDose;



- (void)viewDidLoad
{ 
    [super viewDidLoad];

    NSLog(@"%@ %@", @"recieved MEDICATION", self.med);
    NSLog(@"%@ %@", @"recieved Name", _chName);
    fibroMappAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
    context = [delegate managedObjectContext];

    tbName.text = _chName;
}

chName 在 .h 文件中声明为 NSString

有人可以帮我弄清楚我做错了什么吗?以及如何解决它.....在过去的几个月里我花了很多时间断断续续地解决这个问题

这是准备segue开始后的日志副本

2013-11-07 14:21:15.475 fibromapp[660:70b] 选择的 MED:med1

2013-11-07 14:21:15.476 fibromapp[660:70b] editMeds

2013-11-07 14:21:15.477 fibromapp[660:70b] MED NAME(实体:药物;ID:0x8a6b0a0;

数据:{

剂量 = 3;

lastTaken = nil;

最大剂量 = 5;

名称 = med1;

类型 = 毫克;

})

2013-11-07 14:21:15.479 fibromapp[660:70b] 警告:在演示过程中尝试演示!

---------------------下面是MedsEdit View 中的DidLoad------ ------

2013-11-07 14:21:15.497 fibromapp[660:70b] 收到 MEDICATION (null)

2013-11-07 14:21:15.498 fibromapp[660:70b] 收到名称(空)



Best Answer-推荐答案


[segue isEqual: @"editMeds"] 应该是 [segue.identifier isEqualToString: @"editMeds"] 开始...

关于ios - 在 View Controller 之间传递核心数据项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837760/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap