0

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

我目前的方法是尝试使用管理器对象从文本字段中收集字符串值,然后将其设为下一个核心数据添加的默认值。

出于某种原因,在我分配并初始化文本字段后,我无法使用该值(它在我的表中显示为空白)(不为空)。

你能给些建议么?先感谢您:

//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

titleLabel 链接到输入 NSTextField

titleText 是将字符串传递给 ItemEntity 的单例

titleValue 是核心数据中的模型键路径

谢谢!

4

1 回答 1

0

您可以执行以下步骤:

1)使用核心数据创建新项目

2)你会找到CoreDataExample.xcdatamodelid,点击它。

3)选择实体并点击添加实体,这个选项将在底部。

4)选择实体并添加属性并将类型设置为字符串

5)去mainmenu.xib拖动表格视图,文本字段和两个按钮“+”和“-”。

使表格视图不可编辑

5)在主menu.xib中拖动一个数组控制器,选择数组控制器进入属性检查器

在以下参数中进行更改

模式 - 实体名称

实体名称 - 标签(您在“CoreDataExample.xcdatamodelid”中给出的任何内容)

检查两个复选框 - 准备和可编辑

6)选择表列绑定到ArrayController,控制器键:arrangedObjects

模型键路径:titleValue

选择Textfield绑定到ArrayController,控制器键:选择modelKeypath:titleValue

8)connect + 按钮到 ArrayController 的添加动作,Connect - 按钮到 ArrayController 的

删除动作。

9)启动应用程序,点击添加按钮,行将被添加到表格视图,开始输入

文本字段,制表符并查看表格视图将填充相同的内容

于 2013-09-24T10:08:44.233 回答