2017-12-19 1 views
0

objective-i에서 iOS 앱 사용자 정의. 언어에 익숙하지 않고 부울 속성을 설정하는이 간단한 작업으로 인해 너무 오래 걸렸습니다.모델의 BOOL 속성 설정

아무도 여기에 조언을 제공 할 수 있습니까? 비디오

// have tried these two an many other things... 
video.hasCustomThumbnail = [NSNumber numberWithBool:NO]; 
video.hasCustomThumbnail = @NO; 

을 참조

Video.h

@property (nonatomic, retain) NSNumber * hasCustomThumbnail; 

Video.m

@implementation Video 
    @dynamic hasCustomThumbnail; 
@end 

에 otherfile 내가 상관없이 내가이 시도 얼마나 많은 방법으로 수십 얻을 오류 것은 : Using a BOOL property

자동 완성 "hasCustomThumbnail"를 제안하기 때문에 나는 또한 비디오를 알고

올바르게 참조 :

'NSInvalidArgumentException', reason: '-[Video setHasCustomThumbnail:]: unrecognized selector sent to instance 0x60c0004925c0' 

이 등 많은 제안를 시도

내가 타이핑을 시작할 때.

는 단순히 OBJ-C이 :-)

어떤 제안을하고 얼마나 열심히 믿을 수 없다?

+0

'비디오'의 수퍼 클래스 란 무엇입니까? '비디오'는 어떻게 선언됩니까? – clemens

+0

@ alexr101 pls 내 대답을 확인하십시오. – GeneCode

+0

'Video'는 CoreData 객체의 표현인가요? – Larme

답변

1

@ 동적 인으로 신고 한 것이 문제입니다. Video.m에서이 줄을 제거하면됩니다. Xcode는 getter와 setter를 자동으로 합성합니다.

이 중 하나가 작동합니다. @dynamic

[obj setHasCustomThumbnail:[NSNumber numberWithBool:true]]; 
obj.hasCustomThumbnail = [NSNumber numberWithBool:true]; 

그냥 getter와 setter 메소드 이 클래스 자체가되지 구현하지만 다른 곳합니다 ( 슈퍼 클래스처럼 또는 런타임에 제공) 컴파일러를 알려줍니다.

@synthesize는 속성에 대한 getter 및 setter 메서드를 생성합니다.

그래서 당신은 @dynamic와 속성을 정의 할 때, 중 당신의 슈퍼 클래스 또는 런타임이 필요한 getter와 setter를 제공해야합니다. 여기 아무도 아무 것도 제공하지 못했습니다. 그 이유는 인식 할 수없는 선택기을 인스턴스로 보냈다는 것입니다. 이 오류는 개체에 대한 적절한 메서드를 찾을 수없는 경우에만 발생합니다. 희망이 당신의 의심을 취소합니다[email protected]

하나 개 실제 사용은 NSManagedObject에서 클래스를 상속 할 때, 핵심 데이터 속성 의 세터와 게터를 제공 할 것입니다.

+0

나는이 일을하기 전에 이미 trid. – alexr101

+0

그것은 작동한다. 나도 예를 들어 프로젝트가있다. 오류는 매우 간단합니다. @dynamic을 Video.m에서 제거하십시오. 기본적으로 모든 속성이 합성됩니다. https://stackoverflow.com/questions/1160498/synthesize-vs-dynamic-what-are-the-differences –

+0

자세한 설명과 함께 업데이트되었습니다. 문제가 해결 된 경우 표시하십시오. 그렇지 않으면 알려주거나 의견을 말하십시오. –

0

이 문제는 BOOL 또는 NSNumber와 관련이 없습니다. 그것은 비디오 클래스의 호출 setIsCustomThumbnail 때문입니다.

video.isCustomThumbnail = 또는 [video setIsCustomThumbnail:] 중 하나를 수행 중이지만 클래스에서 이것을 선언하지 않았 으면 isCustomThumbnail입니다. 코드에서 isCustomThumbnail의 철자가 잘못 표시 된 것 같습니다. 의 사용자 이름은입니다. CustomThumbnail.

그래서 마음을 잡고 하나의 이름을 사용하십시오.

+0

나는 이것으로 어디서 오는지 알 수있다. 하지만 그건 잘못된 것입니다. 내 모든 실험을하는 동안 이름을 몇 번 바꿨지 만 모든 이름이 현재 일치합니다. 내 질문에서 오타였습니다. – alexr101

+0

그런 다음 질문에 답변하려는 다음 사람의 오타를 수정하십시오. – GeneCode