기존 코어 API (Xcode 5, Mavericks, iOS 7.1+)로 기존 iOS 앱을 이식하고 있습니다. 기존 sqlite3 데이터베이스를 가져와야합니다. 모델 파일을 자동 생성하고 데이터베이스의 데이터로 채 웁니다. 그런 다음xcode 코어 데이터 클래스의 데이터 형식이 일치하지 않습니다.
@implementation Details
@dynamic heightInches;
…
:
@interface Details : NSManagedObject
@property (nonatomic) float heightInches;
…
자동 생성이 속성을 구현합니다
나는 스칼라 유형 (자동 생성 때 내가 사용 스칼라 상자를 선택)이 포함 된 자동 생성 된 클래스가 데이터베이스에서 부동 소수점을 사용하여이 속성 값을 설정하려고합니다 :
Details* details = [NSEntityDescription insertNewObjectForEntityForName:@“Details” inManagedObjectContext:context];
[details setHeightInches:(float)sqlite3_column_double(statement, 10)];
…
Whe 내가 구현 재정 만약 내가 같은 런타임 오류가
'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "heightInches"; desired type = NSNumber; given type = NSManagedObject; value = (entity: Details; id: 0x1002286a0 ; data: { heightInches = 0; …
: N이 줄을 내가 다음과 같은 런타임 오류가 실행
@synthesize heightInches;
을 그리고 난 (컴파일시 오류 유형 불일치) 내가 대신 부동의의 NSNumber를 전달하려고하면 : 데이터 형식이 떠있을 때
[details setHeightInches:[NSNumber numberWithFloat:(float)sqlite3_column_double(statement, 10)]];
왜 코어 데이터가의 NSNumber 기대합니까? 코어 데이터가 NSManagedObject로 전달하는 float을 왜 보는가? int32_t 값이 작동하는 것 같습니다. 수레를 위해해야 할 특별한 것이 있습니까?
감사
스칼라 유형을 버리고 NSNumber로 변경할 수 있습니까? – danh
예. 나 자신의 게터와 세터를 쓰자. 나는 게임의 초기에 몇 가지 핵심 데이터 이점을 포기하는 것에 저항한다. –
Gotcha. 그러나 핵심 데이터 이점은 숫자 대신 객체를 표현할 수 있다는 것입니다. NSNumber의 장점 중 하나는 별개의 상태로 nil (대 0.00)을 얻는 것입니다. – danh