1

这是我的 NSObject 代码;

任务.h

#import <Foundation/Foundation.h>

@interface Task : NSObject

@property (nonatomic,strong) NSString *name;
@property (nonatomic,assign) BOOL done;

-(id)initWithName:(NSString *)name done:(BOOL)done;

@end

任务.m

#import "Task.h"

@implementation Task

@synthesize name = _name;
@synthesize done = _done;

-(id)initWithName:(NSString *)name done:(BOOL)done {
    self = [super init];

    if (self) {
        self.name = name;
        self.done = done;
    }
    return self;
}

这是我的发送邮件代码

Task *task = [[Task alloc]init];
        MFMailComposeViewController *sendmail = [[MFMailComposeViewController alloc]init];
        [sendmail setMailComposeDelegate:self];
        NSString *message = [_tasks addObject:task]; // Error is here.
        [sendmail setMessageBody:message isHTML:NO];
        [sendmail setSubject:@"Test"];
        [self presentViewController:sendmail animated:YES completion:nil];

我不知道,该怎么做。我只想用邮件发送列表。我的错误在哪里?我该如何解决这个问题?


任务列表视图控制器.m

@synthesize tasks = _tasks;

我正在从任务表视图转移。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *NotDoneCellIdentifier = @"NotDoneTaskCell";
    static NSString *DoneCellIdentifier = @"DoneTaskCell";

    Task *currentTask = [self.tasks objectAtIndex:indexPath.row];

    NSString *cellIdentifier = currentTask.done ? DoneCellIdentifier : NotDoneCellIdentifier;

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

    // Configure the cell...
    cell.textLabel.text = currentTask.name;

    return cell;
}
4

1 回答 1

0

我不知道你的代码到底出了什么问题,因为你没有提供错误,而且我对 Objective-C 还不是很精通。

我怀疑这是因为您引用了“_tasks”,我没有看到用于创建该类的其他代码。

NSString *message = [_tasks addObject:task];

另一个问题是您使用任务作为数组的输入对象,但它可能不包含任何内容。

你可能不想要这样的东西:

 Task *task = [[Task alloc] initWithName:@"Task 1"];
 NSString *message = [[NSString alloc] initWithFormat:@"Task name is %@", task.name];

另外我猜你还没有发布你的完整代码。

您还忘记在头文件中包含正确的应用内邮件框架:

#import <MessageUI/MFMailComposeViewController.h>

不要忘记将框架也添加到您的项目中!

顺便说一句,您可以使用 删除这两行synthesize,编译器现在会自动执行此操作。不错吧?

于 2013-03-31T21:19:31.493 回答