2014-09-29 5 views
8

में दो डिक्ट्स के साथ XCTAssertEquals मैं अभ्यासवाद कर रहा हूं। प्रोग्रामिंग अभ्यास और मेरे कोड पर किए जाने वाले परीक्षणों का लक्ष्य एक-दूसरे के साथ डिक्ट्स की तुलना करना है। व्यायाम के sourcecode यहाँ https://github.com/exercism/xswift/tree/master/word-countस्विफ्ट

Test code for comparing two dicts

पाया जा सकता है कि मैं क्या समझ लिया है bridgeToObjectiveC काम करने और इसलिए वे हटा दिया गया है के लिए सेब आंतरिक तरीकों है के रूप में। उनके साथ मुझे '[S : T]' does not have a member named 'bridgeToObjectiveC' मिलता है जो इसे समझने में बहुत समझ में आता है।

AssertEquals कॉल में केवल पैरा का उपयोग करने के तरीके के बिना मुझे '[S : T]' does not conform to protocol 'Equatable' मिलता है। स्विफ्ट में दो डिक्ट्स तुलनीय नहीं हैं? तुलनात्मक रूप से प्राप्त करने के लिए मैं उन्हें कैसे करूं?

+0

कृपया कोड के रूप में कोड नमूने शामिल करें। वे पूर्व प्रारूपित पाठ होना चाहिए। –

उत्तर

7

जब तक मान Equatable हैं, तब तक आप शब्दकोशों की समानता की जांच कर सकते हैं। XCTAssertEqualDictionaries संशोधित एक सामान्य बाधा शामिल करने के लिए:

func XCTAssertEqualDictionaries<S, T: Equatable>(first: [S:T], _ second: [S:T]) { 
    XCTAssert(first == second) 
} 
+0

धन्यवाद, यह करने के लिए यह एक सुविधाजनक तरीका है। – Johan

1

नहीं, स्विफ्ट शब्दकोश सीधे तुलनीय नहीं हैं। यूनिट-परीक्षण के प्रयोजनों के लिए, आप या तो अपने आकार और जोड़ी-वार तत्व तुलना की मैन्युअल तुलना कर सकते हैं, या आप आसानी से काम कर सकते हैं और उनमें से NSDictionary एस बना सकते हैं और उनसे तुलना कर सकते हैं।

2

XCTAssertEqual(swiftDict as NSObject, objCDict as NSObject) 

बलों का प्रयास करें संकलक सिर्फ मस्ती और दोनों पर isEqual: विधि कॉल करने के।