코어 데이터에서 NSUInteger를 유지하기 위해 사용해야하는 NSNumber (Integer 16, 32, 64)
NSUInteger를 핵심 데이터에 보관하고 싶은데 필요한 공간에 맞게 어떤 유형 (정수 16, 32, 64)을 사용해야하는지 모르겠습니다.
내 이해에서 :
Integer 16 can have minimum value of -32,768 to 32,767
Integer 32 can have minimum value of -2,147,483,648 to 2,147,483,647
Integer 64 can have minimum value of -very large to very large
NSUInteger는 unsigned int와 동일한 unsigned long의 유형 def입니다 ( iPhone의 Objective-c 유형 ).
그래서 내 NSUInteger를 numberWithUnsignedInteger로 NSNumber로 변환하고 NSNumber (Integer 32)로 저장하면 데이터를 안전하게 다시 검색 할 수 있습니까?
당신이 할 정말 의 전체 범위를 필요 NSUInteger? iOS에서는 서명되지 않은 32 비트 값으로 매우 커질 수 있습니다. 부호있는 64 비트를 찾습니다.
그러나 어쨌든 그렇게 많은 정밀도가 필요하지 않을 것입니다. A에 대한 최대 uint32_t인 UINT32_MAX4,294,967,295 (40 억)이다. 1 초에 한 번 증가하면 그 값에 도달하는 데 136 년 이상이 걸립니다. 사용자의 iPhone은 그때 쯤이면 없을 것입니다 ... :)
가능하다면 디스크 나 네트워크를 통해 데이터를 쓸 때 값의 크기를 명시하는 것이 가장 좋습니다. 대신 데이터 형식, 사용으로 NSUInteger를 사용 uint16_t, uint32_t또는 uint64_t당신이 필요로하는 범위에 따라. 그러면 자연스럽게 Core Data에서 Integer 16, 32 및 64로 변환됩니다.
이유를 이해하려면 다음 시나리오를 고려하십시오.
- 값을 저장하기 위해 Integer 64 유형을 사용하도록 선택합니다.
- 64 비트 iOS 장치 (예 : iPhone 6)에서는 5,000,000,000 값을 저장합니다.
- 32 비트 iOS 기기에서이 값은
NSUInteger(NSNumber의를 사용하여) 저장소에서로 가져옵니다unsignedIntegerValue.
이제 NSUInteger32 비트 장치에서 32 비트 만 있기 때문에 50 억을 나타내는 비트가 충분하지 않기 때문에 숫자는 더 이상 5,000,000,000이 아닙니다. NUInteger3 단계에서를 교체했다면 uint64_t그 가치는 여전히 50 억이 될 것입니다.
NSUInteger를 반드시 사용해야하는 경우 위에서 설명한 문제에 대해주의를 기울이고 방어 적으로 코딩하면됩니다.
서명되지 않은 값을 겉보기에 서명 된 Core Data 유형에 저장하는 한 안전하게 저장하고 검색 할 수 있습니다.
NSManagedObject *object = // create object
object.valueNumber = @(4000000000); // Store 4 billion in an Integer 32 Core Data type
[managedObjectContext save:NULL] // Save value to store
// Later on
NSManagedObject *object = // fetch object from store
uint32_t value = object.valueNumber.unsignedIntegerValue; // value will be 4 billion
'Program Club' 카테고리의 다른 글
| 이 코드로 TLS를 통해 TLS를 실행하려고 할 때 핸드 셰이크 오류가 발생하는 이유는 무엇입니까? (0) | 2020.11.15 |
|---|---|
| 플레이 프레임 워크 애플리케이션을위한 무료 및 저비용 호스팅 경험이 있으십니까? (0) | 2020.11.15 |
| 함수 호출이 최신 플랫폼에 효과적인 메모리 장벽입니까? (0) | 2020.11.15 |
| WPF / XAML의 오픈 소스 대안은 무엇입니까? (0) | 2020.11.15 |
| 컬렉션에서 임의의 하위 집합을 선택하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.15 |