2015-02-03 3 views
4

Может кто-нибудь поможет найти, как написать это в SwiftОбъект соответствует протоколу Swift

NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost]; 

Значение выше ObjectiveC кода говорит object типа NSMutableDictionary это соответствует протоколу FBOpenGraphObject. Я пытался представить это в стрижа как

var object:FBOpenGraphObject, Dictionary = FBGraphObject.openGraphActionForPost() 

// specify that this Open Graph object will be posted to Facebook 
object.provisionedForPost = true //This will not work 

Но это не является правильным, i'am не может присвоить любое значение объекта. Помогите мне, чтобы выяснить, как представить объект соответствует протоколу в быстрой

ответ

3

Может быть, вы могли бы сделать это:

var obj = FBGraphObject.openGraphActionForPost() 
if let fbObj = obj as? FBOpenGraphObject { 
    // specify that this Open Graph object will be posted to Facebook 
    fbObj.provisionedForPost = true // use fbObj for FBOpenGraphObject-specific members 
    obj["title"] = "Test hot spot" // use obj for Dictionary-specific members 
    // Both obj and fbObj vars point to the same object 
} 
+0

Этого не будет работать, если я пытаюсь сделать «fbObj [» название «] =» Test hot spot "", дающая ошибку 'FBOpenGraphObject', не имеет члена с индексом –

+0

Это« ожидается », так как нет никакого намека на компилятор, что здесь применяется метод' FBOpenGraphObject' для типа «Словарь». Когда вы хотите получить доступ к определенным членам FBOpenGraph'а, используйте переменную 'fbObj', и когда вы хотите получить доступ к членам, зависящим от словаря, используйте' obj'. Я признаю, что может быть лучший способ, о котором я еще не знаю. – Romain

+1

Смотрите также эту другую нить SO, которая похожа на ваш вопрос, и имеет аналогичный ответ с двумя разными варами, указывающими один и тот же объект, но интерпретированными по-разному: http://stackoverflow.com/questions/26401778/swift-how-can-i -declare-а-переменной в своем конкретных типа-того-Соответствует к одному или-м? LQ = 1. – Romain

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