Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

swift something wrong with String init(format... method? [duplicate]

Tags:

string

swift

let elem1 = "1"
let elem2 = "2"
let array = [elem1, elem2]
let format = "%@ != %@"

//compiler error
//can't find an initializer for type...
let str = String(format: format, arguments: elem1, elem2)

//no errors but wrong output
//("%@ != %@", "1", "2")
let str = String(format: format, _arguments: elem1, elem2)

//runtime error
//fatal error: can't unsafeBitCast between types of different sizes
//this is what I need
let str = String(format: format, arguments: array)

//only this works with the right output
//1 != 2
let str = String(format: format, arguments: [elem1, elem2])

print(str)

tested in xcode7 beta and xcode6.3, I couldn't find a workaround right now

like image 960
dopcn Avatar asked Jun 18 '15 02:06

dopcn


1 Answers

Use this syntax (XCode 7):

import Foundation

let elem1 = "1"
let elem2 = "2"
let format = "%@ != %@"
let str = String(format: format, elem1, elem2) // "1 !=2"
print(str) // "1 != 2\n"

The trick is to specify the overloaded ctor with format: and skip arguments: all together.

like image 160
John Difool Avatar answered Sep 30 '22 18:09

John Difool