Cocoa 在使用textfield添加到核心数据之前,是否可以更改属性的默认值?
我的核心数据显示在NSTableView中。我希望能够在用户单击“添加”时使用用户输入(NSTextFields)填充下一行 我目前的方法是尝试使用manager对象从文本字段收集字符串值,然后将其作为下一次添加核心数据的默认值 由于某种原因,在我alloc并初始化textfield之后,我无法使用该值(它在我的表中显示为空)(非空) 你能给个建议吗?提前感谢您:Cocoa 在使用textfield添加到核心数据之前,是否可以更改属性的默认值?,cocoa,attributes,Cocoa,Attributes,我的核心数据显示在NSTableView中。我希望能够在用户单击“添加”时使用用户输入(NSTextFields)填充下一行 我目前的方法是尝试使用manager对象从文本字段收集字符串值,然后将其作为下一次添加核心数据的默认值 由于某种原因,在我alloc并初始化textfield之后,我无法使用该值(它在我的表中显示为空)(非空) 你能给个建议吗?提前感谢您: //this is my core data object // ItemEntity.h #import <Foundat
//this is my core data object
// ItemEntity.h
#import <Foundation/Foundation.h>
@interface ItemEntity : NSManagedObject{
}
-(NSString *) titleValue;
@end
// ItemEntity.m
#import "ItemEntity.h"
#import "MyManager.h"
@implementation ItemEntity
-(NSString *)titleValue{
MyManager *sharedManager = [MyManager sharedManager];
NSString *nam = [NSString stringWithFormat:@"%@", sharedManager.titleText]; //titleText from MyManager;
return nam;
}
@end
// MyManager.h
#import <Foundation/Foundation.h>
@interface MyManager : NSObject {
@private
IBOutlet NSTextField *titleLabel;
NSString *titleText;
}
@property (nonatomic, retain) NSString *titleText;
+ (id)sharedManager;
@end
// MyManager.m
#import "MyManager.h"
@implementation MyManager
@synthesize titleText;
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init {
if (self = [super init]) {
titleLabel = [[NSTextField alloc] init];
NSString *myString = [titleLabel stringValue];
titleText = [[NSString alloc] initWithFormat:@"default, %@", myString];
}
return self;
}
@end
//这是我的核心数据对象
//项目实体.h
#进口
@接口项实体:NSManagedObject{
}
-(NSString*)标题值;
@结束
//ItemEntity.m
#导入“ItemEntity.h”
#导入“MyManager.h”
@实现项实体
-(NSString*)标题值{
MyManager*sharedManager=[MyManager sharedManager];
NSString*nam=[NSString stringWithFormat:@“%@”,sharedManager.titleText];//来自MyManager的titleText;
返回越南;
}
@结束
//我的经理
#进口
@接口MyManager:NSObject{
@私人的
IBNStextfield*标题标签;
NSString*标题文本;
}
@属性(非原子,保留)NSString*titleText;
+(id)共享管理者;
@结束
//我的经理
#导入“MyManager.h”
@实施MyManager
@合成titleText;
+(id)共享管理器{
静态MyManager*sharedMyManager=nil;
静态调度一次;
一次发送(一次发送)^{
sharedMyManager=[[self alloc]init];
});
返回sharedMyManager;
}
-(id)init{
if(self=[super init]){
titleLabel=[[NSTextField alloc]init];
NSString*myString=[titleLabel stringValue];
titleText=[[NSString alloc]initWithFormat:@“默认,%@”,myString];
}
回归自我;
}
@结束
标题标签链接到输入NSTEXT字段
titleText是将字符串传递给ItemEntity的单例
titleValue是核心数据中的模型关键路径
谢谢大家! 您可以执行以下步骤: 1) 使用核心数据创建新项目 2) 您将找到CoreDataExample.xcdatamodelid,单击它 3) 选择实体并单击添加实体,此选项将位于底部 4) 选择实体并添加属性,并将类型设置为字符串 5) 转到mainmenu.xib拖动表格视图、文本字段和两个按钮“+”和“-” 使tableview不可编辑 5) 在主菜单中拖动一个阵列控制器。xib,选择arraycontroller转到属性检查器 在以下参数中进行更改 模式-实体名称 实体名称-标签(无论您在“CoreDataExample.xcdatamodelid”中给出了什么) 选中两个复选框-准备和可编辑 6) 选择表列绑定到ArrayController,控制器键:arrangedObjects modelKeypath:标题值 选择文本字段绑定到ArrayController,控制器键:选择模型键路径:标题值 8) 将+按钮连接到ArrayController的添加操作,将-按钮连接到ArrayController的添加操作 删除操作 9) 启动应用程序,点击添加按钮,将行添加到表视图,开始输入 文本字段、tab out和see table view将填充相同的内容