2013-03-31 50 views
1

這是我的NSObject代碼;發送郵件TableView NSArray

Task.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 

Task.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]; 

我不知道如何去做。我只想發送郵件列表。我的錯誤在哪裏?我該如何解決這個問題?


Tasklistviewcontroller.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; 
} 
+0

您的源代碼不完整。什麼是'_tasks'? –

+1

這與桌面視圖有什麼關係? – rmaddy

+0

我更改了代碼。 – Salieh

回答

0

我不知道你的代碼有什麼問題,因爲你不提供一個錯誤,我不熟悉Objective-C。

我懷疑這是因爲你引用了「_tasks」,我沒有看到用於創建該類的其他代碼。

NSString *message = [_tasks addObject:task]; 

另一個問題是,你使用任務作爲數組的輸入對象,但它可能不包含任何東西。

你可能wan't這樣的事:

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

而且我猜你沒有張貼您的完整代碼。

你也忘了,包括在你的頭文件應用程序內郵寄正確的框架:

#import <MessageUI/MFMailComposeViewController.h> 

不要忘了也框架把它添加到您的項目!

順便說一句,你可以用synthesize刪除兩行,編譯器自動完成這些工作。不是嗎?

+0

我有多個任務。我們也有一個錯誤,initWithFormat行。 沒有可見@interface for'Task'聲明選擇器'initWithName:' 我改變了這樣的代碼:Task * task = [[Task alloc] initWithName:@「Task 1」done:NO];那麼我的郵件messagebody是任務名稱是任務1。 – Salieh

+0

如果你有超過1個,你需要一個數組,但是'setMessageBody'只接受一個NSString,所以你需要將NSArray轉換爲那個。是的,我忘了第二個完成:不,但你自己想出來)。但是郵件視圖已經正確打開了? – edwardmp

+0

是郵件視圖正確打開。但我如何轉換NSArray?我不知道任何想法。 – Salieh