2014-11-06 2 views
-7

간단한 노트 앱을 쓰고 있습니다. 그러나 note.title에 제목을 할당하려고하면 오류가 발생합니다.셀 제목의 텍스트를 설정할 수 없습니다.

-(Notez*)createNoteWithTitle:(NSString*)titleNote andText:(NSString*)textNote 
{ 
    Notez *newNote = [Notez new]; 
    if (!_notesArray) { 
     _notesArray = [NSMutableArray new]; 
    } 
    newNote.dateCreated = [NSDate new]; 
    newNote.title = [NSString stringWithFormat:@"23"]; 
    newNote.text = [NSString stringWithFormat:@"233"]; 
    [_notesArray addObject:newNote]; 
    return newNote; 
    } 

Notez.h : # import를

@interface Notez : NSObject 
@property NSString *text; 
@property NSString *title; 
@property NSDate* dateCreated; 
-(Notez*)createNoteWithTitle:(NSString*)title andText:(NSString*)text; 
-(void)save; 
+(instancetype)sharedManager; 
-(NSArray*)sortedNotes; 
-(void)removeNoteAtIndex:(NSUInteger)index; 
@end 

note.dateCreated는 OK이지만, note.title 및 note.text 없습니다.

그들은 ... 모두는 NSString 있습니다

- (IBAction)addNote:(id)sender { 
    [[Notez sharedManager] createNoteWithTitle:@"Note Title" andText:@"Note Text"]; 
} 
+0

1) '메모'클래스에 대한 더 자세한 정보를 제공해야합니다. 2)'stringWithFormat'을 오용하지 마십시오. 그냥'newNote.title = @ "23";'을해라. – rmaddy

+0

+ BarButtonItem –

+0

을 탭하면 'Notez.h' 파일을 우리와 공유 할 수 있습니까? – nburk

답변

0

당신이 속성으로 titletext을 선언 한 이후, 그러나 어떤 이유로 예외를 얻을 : [Notez setTitle이라는이 :] : 인식 할 수없는 선택 예를로 전송 외관상으로는

나는 다른 추측을 할 수 있습니다. 일반적으로 속성을 선언 할 때 settergetter 메서드가 있습니다. 이런 식으로 클래스에 인스턴스 변수가 많은 경우 직접 작성하지 않아도됩니다.

dot notation을 사용하는 것은 setter 또는 getter을 호출하는 것과 같습니다.

newNote.title = [NSString stringWithFormat:@"23"];

는 동일합니다 귀하의 경우 그래서 :

[newNote setTitle:[NSString stringWithFormat:@"23"]];

지금, 당신이 제안을 제외하고는 setter 방법 있음 : setTitle: 실제로 객체에 존재하지 않습니다. 이 이유가 무엇인지 모르겠지만 명시 적으로 시도 할 수 있습니다 속성을 합성하십시오. 당신의 하는 .m 파일 코드의 다음 줄을 추가

는 는 그 때문에이

이 실제로 문제를 해결할 것입니다,하지만 난 희망하는 경우

@synthesize title; 
@synthesize text; 

확실하지가 properties, getterssetters의 설명이 도움이 무슨 일이 일어나는지 조금 더 이해하게.

+0

예, 합성 대신 동적 인 경우가 있습니다. –

+2

@GeorgeSabanov 당신은'@dynamic' 또는'@ synthesize'를 원하지 않습니다. – rmaddy

관련 문제