2017-01-19 2 views
2

Когда я пытаюсь добавить новое поле в тип записи, нет возможности добавить тип Bool. Как я могу это сделать?Как создать поле с типом Bool для типа записи?

enter image description here

+1

'Int (64)' - 1 истинно, 0 - false. – luk2302

+0

и других решений? Только через Int? –

+0

Ну, вы * можете * использовать любой тип данных с двумя конкретными значениями, но Int - самый чистый и простой. – luk2302

ответ

3

Ссылаясь на Creating a Database Schema by Saving Records компании Apple документации, следующая таблица содержит CloudKit возможных типов полей:

enter image description here

, к сожалению, нет типа Bool найден. Что я нахожу -logically- является наиболее подходящим для замены в Bool является Int(64), потому что:

Int (64) класс -по упоминается в table- является NSNumber который имеет boolValue, который возвращает Swift Bool:

Значение номера объекта, выраженное в виде логического значения. Значение 0 всегда означает false, и любое ненулевое значение интерпретируется как истинное.

Для получения более подробной информации ознакомьтесь с документацией NSNumber.

Это приводит к простоте рассматривать их как Bool внутри вашего приложения. Например:

let myFalseNumber:NSNumber = 0.0 
let myTrueNumber:NSNumber = 0.
let anotherTrueNumber: NSNumber = -99 

print(myFalseNumber.boolValue) // false 
print(myTrueNumber.boolValue) // true 
print(anotherTrueNumber.boolValue) // true 

Хотя оба Int(64) и Double рассматриваются как NSNumber, причина, почему выбирают Int(64) вместо Double (Тип CloudKit) является общность лечения «1, если оно истинно, и 0, если ложно» (без каких-либо плавающих точки). Для получения дополнительной информации вы можете проверить Boolean data type - Generalities (Wikipedia).

Надеюсь, это помогло.