Swift

2015-07-29 30 views
14

'da NSJSONSerialization.JSONObjectWithData için seçenekler nasıl iletilir Swift (2.0) içinde JSON serileştirirken hiçbir seçenek iletmek istemiyorum. Hatası alıyorum,Swift

NSJSONSerialization.JSONObjectWithData(data, options: nil) 

Ama bu derleme değil: Başlangıçta çalıştı

Type NSJSONReadingOptions does not conform to protocol NilLiteralConvertible

enum NSJSONReadingOptions herhangi bir 'Hiçbiri' seçeneği yok, bu yüzden eğer ben ne yapacağım Bu seçeneklerden herhangi birini istemiyor musunuz?

cevap

20

swift 2 size no options belirtmek için boş dizi [] kullanmalıdır:

NSJSONSerialization.JSONObjectWithData(data, options: []) 
+0

, can numaralandırma beklediğinde neden [] geçebileceğimi gösteren herhangi bir belgeye işaret ediyorsun? – markdb314

+0

@ markdb314 Sadece bir doc bağlantısı arıyordum, bana bir saniye ver. – luk2302

+0

@ markdb314 maalesef bunun neden işe yaradığına dair bir belge bulamıyorum, ancak bunun yolun nasıl olduğundan emin olabileceğinizi, seçeneklerin verileceği ve [] teslim edildiği diğer cevaplara bakacağınızdan emin olabilirsiniz. ** struct ** (değil enum) 'NSKeyValueObservingOptions' ile uyumlu olan RawOptionSetType' ile -> http://nshipster.com/rawoptionsettype/ – luk2302

1

Ayrıca NSJSONReadingOptions nesne için boş bir yapıcı kullanabilirsiniz.

NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) 
8

TLDR; Swift 3: Sadece seçenekler paramını atla ve her şey iyi olacak.

JSONSerialization.jsonObject(with: data) 

Açıklama: hızlı 3'te

, işlev çağrısı

class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> AnyObject 

ReadingOptions bir seçenek seti, Opsiyon Seti protokolü için başlık vardır olmasıdır

/// When you need to create an instance of an option set, assign one of the 
/// type's static members to your variable or constant. Alternately, to create 
/// an option set instance with multiple members, assign an array literal with 
/// multiple static members of the option set. To create an empty instance, 
/// assign an empty array literal to your variable. 
/// 
///  let singleOption: ShippingOptions = .priority 
///  let multipleOptions: ShippingOptions = [.nextDay, .secondDay, .priority] 
///  let noOptions: ShippingOptions = [] 

option set docs are here

hangi siteyi tamamen atlamak ve çağrı böylece, ancak zaten varsayılan [] işlev tanımında tanımlamıştır seçenekleri

JSONSerialization.jsonObject(with: data, options: []) 

çağrı anlamına gelir

iş gibi görünüyor
JSONSerialization.jsonObject(with: data)