2015-11-20 8 views
7

मैं एक ऐप और विजेट पर काम कर रहा हूं जिसे विजेट को ऐप से डेटा प्राप्त करने की आवश्यकता है। मैंने NSUserDefaults को पढ़ने और लिखने के लिए निम्न कोड का उपयोग किया है। और मैंने विजेट के लिए $(PRODUCT_BUNDLE_IDENTIFIER).widget और $(PRODUCT_BUNDLE_IDENTIFIER) का उपयोग this पोस्ट का जिक्र किया। लेकिन विजेट ऐप या NSUserDefaults से डेटा नहीं प्राप्त कर सकता है। मैं इसे कैसे कारगर बना सकता हूं?ऐप समूहों का उपयोग करके एनएसयूसर डीफॉल्ट तक नहीं पहुंच सकता है

func addTask(name: String?){ 
     let key = "keyString" 
     tasks.append(name!) 
     let defaults = NSUserDefaults(suiteName: "group.Mins") 
     defaults?.setObject(tasks, forKey: key) 
     defaults?.synchronize() 

    } 

///////

let defaults = NSUserDefaults(suiteName: "group.Mins") 
    let key = "keyString" 

    if let testArray : AnyObject = defaults?.objectForKey(key) { 
     let readArray : [String] = testArray as! [String] 
     timeTable = readArray 
     timeTable = timeTable.sort(<) 
     print("GOT IT") 
     print("timetable: \(timeTable)") 
    } 

उत्तर

32

पढ़ सकते हैं और NSUserDefaults का एक ही सेट से बचाने के लिए आप निम्न की आवश्यकता करने के लिए:

  1. अपने मुख्य अनुप्रयोग में, चुनें प्रोजेक्ट नेविगेटर में आपका प्रोजेक्ट।
  2. अपना मुख्य ऐप लक्ष्य चुनें और क्षमताओं टैब का चयन करें।
  3. ऐप समूह पर स्विच करें (यह डेवलपर पोर्टल के साथ संवाद करेगा, क्योंकि यह एंटाइटेलमेंट का एक सेट तैयार कर रहा है, और प्रासंगिक ऐप आईडी और आगे भी)।
  4. नया कंटेनर बनाएं। सहायता के अनुसार, इसे "समूह" से शुरू होना चाहिए, इसलिए इसे "group.myapp.test" जैसे नाम दें।
  5. अपना आज का विस्तार लक्ष्य चुनें और ऐप समूहों पर स्विच करने की इस प्रक्रिया को दोहराएं। नया न बनाएं, बल्कि इस नए बनाए गए समूह का चयन करें कि यह संकेत दें कि आज का एक्सटेंशन समूह का सदस्य है।

अपने NSUserDefaults को लिखें: NSUserDefaults से

// In this example I´m setting FirstLaunch value to true 
NSUserDefaults(suiteName: "group.myapp.test")!.setBool(true, forKey: "FirstLaunch") 

पढ़ें:

// Getting the value from FirstLaunch 
let firstLaunch = NSUserDefaults(suiteName: "group.myapp.test")!.boolForKey("FirstLaunch") 

if !firstLaunch { 
    ... 
} 

स्विफ्ट 3.0:

लिखें

UserDefaults(suiteName: "group.myapp.test")!.set(true, forKey: "FirstLaunch") 

UserDefaults(suiteName: "group.myapp.test")!.bool(forKey: "FirstLaunch") 
संबंधित मुद्दे