2016-10-12 3 views
-2

Мой код вызывает String.appendingFormat, чтобы добавить форматированную строку к значению, которое используется в качестве вывода в приложении для iPhone. Когда вызов включает строку формата и два аргумента значения (например, ("The numbers are %d and %d", number1, number2)), он отлично работает на симуляторе, но на моем iPad второе значение всегда обрабатывается как ноль.Ошибка iOS 10 на устройстве, но не на симуляторе

Обратите внимание, что в каждом случае это значение приходит от Int64 массива.

Почему она будет работать по-другому на реальном устройстве, чем в симуляторе?

Вот лучше отформатированный вариант моего ответа (один из этих дней, я буду помнить, что новые строки проглатываются в ответах):

var results = [Int64]() 
var A: Int64 = 123 
results.append(A) 

На симуляторе результаты [0] = 123

На iPad, результаты [0] = что-то похожее на указатель; это 11-значный номер, который изменяется каждый раз, когда код выполняется

var outputString: String = "" 
outputString = outputString.appendingFormat("%d %d", A, results[0]) 

На тренажере, outputString = "123 123"

На IPAD, outputString = "123 0"

+5

Нужен ваш код для отладки. – Santosh

+1

http://stackoverflow.com/a/8679/642626 –

+1

печать такой. 'print (« Числа: \ (number1) и \ (number2) ")' –

ответ

0

TURNS ссылка Брайана Чена была решением - то, что происходило, было, поскольку я использовал% d вместо% lld, каждый Int64 отображался как его четыре младших байта в десятичном формате, за которым следуют четыре больших байта. Когда я добавил дополнительные аргументы в вызов, он покажет первый аргумент, затем нуль, затем второй аргумент, затем нуль и т. Д.

Смежные вопросы