我在我的视图控制器中调用方法 doSomething。该方法在我的超类和子类中声明(这些类用于我的 3 个实体 - 1 是其他 2 的父类)。超类被称为 SuperClass (不是真的,而是为了提问)。我为名为 superClass 的类创建了一个实例。
[超类做某事];
该方法返回一个字符串,这个返回的字符串应该是用户在 ViewController 中声明的 UITextField 中输入的文本。我不能让它工作。当一切都包含在 VC 中时,我让它工作正常,但现在我不得不使用实体类,如果超类没有返回值,它会在子类中查找。该属性是要返回的名称。我需要在 headingText (UITextField) 中输入值,让 doSomething (method) 返回存储在 superClass.name 中的值,然后 cell.displayText.text = superClass.name 将显示该值。非常感谢任何和所有帮助!谢谢!
超类.m
#import "SuperClass.h"
@implementation SuperClass
@dynamic name;
-(NSString *)doSomething
{
return self.name;
}
@end
子类A.m
#import "SubClassA.h" //SubClassA.h imports SuperClass.h
@implementation SubClassA
@dynamic body;
@dynamic heading;
-(NSString *)doSomething
{
[super doSomething];
return self.name;
}
@end
视图控制器.m
- (IBAction)donePressed:(id)sender {
AppDelegate* appDelegate = ( AppDelegate* ) [ [UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
SuperClass *superClass = [NSEntityDescription
insertNewObjectForEntityForName:@"SuperClass"
inManagedObjectContext:context];
superClass.name = headingText.text; //headingText is UITextField
NSString *fromDoSomething = [superClass doSomething];
// I'm missing something here!
[superClass doSomething];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s",__FUNCTION__);
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.textLabel.font = [UIFont systemFontOfSize:19.0];
}
NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
SuperClass *superClass = (SuperClass *)object;
superClass.name = superClass.doSomething;
cell.textLabel.text = superClass.name;
return cell;
}