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 라인이 있습니다. 'Task'의 표시되지 않는 @interface가 selector 'initWithName :'을 선언합니다. 이 코드는 다음과 같이 변경됩니다. Task * task = [[Task alloc] initWithName : @ "Task 1"done : NO]; 내 메일 메시지 본문은 Task name is Task 1입니다. – Salieh

+0

1 개 이상인 경우 배열이 필요하지만'setMessageBody'는 NSString만을 받아들이므로 NSArray를 NSString으로 변환해야합니다. 그리고 네, 나는 두 번째 일을 잊어 버렸습니다. 아니,하지만 너 자신을 알아 냈어.). 그러나 메일보기가 이미 올바르게 열리고 있습니까? – edwardmp

+0

예 메일보기가 열립니다. 하지만 NSArray를 어떻게 변환합니까? 나는 어떤 생각을 알지 못한다. – Salieh