2014-12-28 5 views
0

Realm documentation site의 영역 이전 예제는 새로운 NSString 객체의 예를 보여줍니다. 이 예제는 간단하고 잘 설명되어 있습니다.NSDictionary에서 다양한 데이터 유형의 새 객체 저장

if (oldSchemaVersion < 2) { 
    newObject[@"email"] = @""; // creates an NSString object... 
} 

그러나 NSString 이외의 개체는 무엇입니까? 이러한 다른 데이터 유형의 객체를 만들려면 코드 스 니펫을 어떻게 수정해야합니까?

  • NSDate
  • NSData
  • RLMArray
  • NSInteger, int
  • double, float, CGFloat
  • long
  • bool, BOOL

답변

3

ObjC/Cocoa의 특정 유형의 객체에만 이와 같은 리터럴 바로 가기가 있습니다. (역사적으로, NSString 사실 같은 구문을 사용하여 유일한 클래스했지만, 몇몇 added recently-ish by the Clang compiler이었다.)

NSData, 또는 RLMArrayNSDate에 대한 리터럴 구문이 없다; 이들은 적절한 구축 방법으로 생성되어야합니다. double, longBOOL 같은

원시 유형은 NSDictionary에 직접 저장 할 수 없지만 즉 "설탕"@(), 사용하여 포장 할 수 있습니다

newObject[@"numFrobs"] = @(anInteger); 

이는 NSNumber에 값을 넣을 다음 풀어해야 인스턴스, 프리미티브 값을 검색 할 수 있습니다 :

NSInteger numFrobs = [newObject[@"numFrobs"] integerValue]; 
+0

조쉬! 이것은 이미 도움이됩니다! – iKK

+0

또 하나의 질문 : 내가 이해 한대로, 영역 이동은 객체 열거를 수행합니다 (마이그레이션 enumerateObjects : Person.className 블록 :^(RLMObject * oldObject, RLMObject * newObject) {...}). "적절한 건설 방법"당신은 더 복잡한 NSData, NSDate, RLMArray에 대해 언급 했습니까 ?? 예를 들어 보셨나요? 이것에 어떤 도움을 주셔서 감사합니다! – iKK

+0

나는 보통의 생성 방법을 의미한다 :'[NSDate date]','[NSData dataWithBytes :]'. –

-1

그것을 생각하는 가장 좋은 방법은 당신이 O를 ​​만들 수 인 것처럼입니다 당신의 코드에있는 기억에 빠지십시오. @ ""는 NSString의 짧은 형식이지만 [NSString stringWithFormat : @ ""]도 사용할 수 있습니다.

+0

아니요, 실제로 문자열 형식이 아닌 경우'stringWithFormat :'을 사용하지 마십시오. –

관련 문제