Когда я пытаюсь добавить новое поле в тип записи, нет возможности добавить тип Bool. Как я могу это сделать?Как создать поле с типом Bool для типа записи?
ответ
Там нет типа Bool для CKRecord.The лучшим вариантом является Int (64).
Ссылаясь на Creating a Database Schema by Saving Records компании Apple документации, следующая таблица содержит CloudKit возможных типов полей:
, к сожалению, нет типа 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).
Надеюсь, это помогло.
'Int (64)' - 1 истинно, 0 - false. – luk2302
и других решений? Только через Int? –
Ну, вы * можете * использовать любой тип данных с двумя конкретными значениями, но Int - самый чистый и простой. – luk2302