Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
Cocoa 在使用textfield添加到核心数据之前,是否可以更改属性的默认值?_Cocoa_Attributes - Fatal编程技术网

Cocoa 在使用textfield添加到核心数据之前,是否可以更改属性的默认值?

Cocoa 在使用textfield添加到核心数据之前,是否可以更改属性的默认值?,cocoa,attributes,Cocoa,Attributes,我的核心数据显示在NSTableView中。我希望能够在用户单击“添加”时使用用户输入(NSTextFields)填充下一行 我目前的方法是尝试使用manager对象从文本字段收集字符串值,然后将其作为下一次添加核心数据的默认值 由于某种原因,在我alloc并初始化textfield之后,我无法使用该值(它在我的表中显示为空)(非空) 你能给个建议吗?提前感谢您: //this is my core data object // ItemEntity.h #import <Foundat

我的核心数据显示在NSTableView中。我希望能够在用户单击“添加”时使用用户输入(NSTextFields)填充下一行

我目前的方法是尝试使用manager对象从文本字段收集字符串值,然后将其作为下一次添加核心数据的默认值

由于某种原因,在我alloc并初始化textfield之后,我无法使用该值(它在我的表中显示为空)(非空)

你能给个建议吗?提前感谢您:

//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将填充相同的内容