Как представить нулевое или нулевое двойное значение в NSMutableData?
У меня есть массив двойных значений, которые должны храниться во внешнем файле. Я конвертирую массив в NSMutableData и сохраняю данные на диск.
Некоторые из двойных значений либо отсутствуют (ноль), либо равны нулю (0,0). Недостающие значения могут быть заменены на 0.0 или на максимальное двойное представление.
Но Double не имеет максимального значения (например, Int.max), а значения 0.0 интерпретируются NSData как байты завершения. Таким образом, каждый раз, когда встречается значение 0.0, данные заканчиваются слишком рано.
var description: String {
var output: String = ""
for value in self
{
output = output + "\(value)\n"
}
return output
}
var count : Int { return data.length/sizeof(Double) }
func append(var value: Double)
{
self.data.appendBytes(&value, length: self.size)
}
subscript(index: Int) -> Double?
{
assert(index < self.count, "index exceeds bounds")
var output : Double?
self.data.getBytes(&output, range: NSRange(location: index * self.size, length: self.size))
return output
}
редактировать:
О, я использовал метод generate для распечатки значений, и GeneratorOf останавливается после первого значения nil. Тем не менее, что было бы хорошим способом представить нулевое значение для дифференциации от 0,0?
func generate() -> GeneratorOf<Double>
{
var index = 0
var count = self.counter
return GeneratorOf<Double> {
if index < count
{
return self[index++]
}
return nil
}
}
edit2
Это Double.infinity, а не Int.max
Мне нужно проснуться сейчас.
1 ответ
Единственное решение, которое приходит мне в голову - это обернуть двойное NSNumber
, так что вы можете иметь 0,0 правильно и для nulls
Вы можете использовать NSNull
, Есть ли какая-то конкретная причина, по которой вы не используете NSNumber
?