स्थिति के रूप में यह
आईओएस - आज विस्तार विजेट समय के साथ मंजूरी दे दी
होना चाहिए हम एक आज विजेट है कि 6 बटन की एक अधिकतम इसी अनुप्रयोग में सेट डेटा के आधार पर पता चलता है। यह डेटा ऐप-समूह का उपयोग करके साझा किया जाता है। यदि कम से कम एक बटन कॉन्फ़िगर किया गया है तो यह उपरोक्त छवि में दिखाए गए अनुसार दिखाई देगा। यदि उपयोगकर्ता लॉग इन नहीं है, या यदि कोई बटन कॉन्फ़िगर नहीं किया गया है, तो यह नीचे दी गई छवि में दिखाए गए संदेश दिखाएगा।
समस्या
कई घंटे (कहीं बीच 4 और 7) के एप्लिकेशन नहीं खोला है, विजेट reverts 'नहीं बटन कॉन्फ़िगर किया गया' को देखने के लिए के बाद।
विश्लेषण अब तक
जिस तरह से डेटा एप्लिकेशन-समूह से भरी हुई है जैसा कि नीचे दिखाया कोड का उपयोग किया जाता है। (gist for full code) जिस तरह से मैंने इसे लिखा था, 'नो बटन कॉन्फ़िगर' दृश्य का एकमात्र तरीका दिखाया जा सकता है कि buttons
सरणी वास्तव में मौजूद है लेकिन शून्य की लंबाई है।
मैं एक कैश समाशोधन या एक पृष्ठभूमि सेवा रोक की तरह कुछ की उम्मीद है, लेकिन जहाँ तक मैं देख सकते हैं, अपवाद पहले पकड़ा जाना चाहिए: कोई संबंध एप्लिकेशन-समूह डेटा में किए जा सकने
- हैं,
userDefaults
शून्य होना चाहिए, इसलिए इसे 'लॉग इन व्यू' दिखाना चाहिए। - मामले में बटन कभी नहीं परिभाषित किया गया,
buttons
नहीं के बराबर होना चाहिए और इसलिए इसे फिर से
एप्लिकेशन को ध्यान में रखते पृष्ठभूमि में कुछ नहीं करता है 'दृश्य में प्रवेश नहीं है' दिखाना चाहिए, एप्लिकेशन को स्वयं में बदलाव नहीं किया जा सकता है बटन
मैंने डीबगर कनेक्ट होने के दौरान इसे पुन: उत्पन्न करने का प्रयास किया, लेकिन समस्या पुन: उत्पन्न नहीं होगी।
क्या किसी को भी इस समस्या को ठीक करने या इसे डिबग करने के तरीके पर थोड़ा सा विचार है?
प्रासंगिक फ़ाइलें:
प्रासंगिक कोड:
private struct sharedData {
static var baseUrl: String?
static var token: String?
static var phoneDeviceId: String?
static var buttons: Array<Button>?
}
func loadData() {
let groupIdentifier = "group." + NSBundle.mainBundle().bundleIdentifier!
var groupIdArray = groupIdentifier.componentsSeparatedByString(".")
groupIdArray.removeAtIndex(groupIdArray.count - 1)
let appGroupIdentifier = groupIdArray.joinWithSeparator(".");
let userDefaults = NSUserDefaults.init(suiteName: appGroupIdentifier)
if (userDefaults == nil) {
print("Error in user defaults")
setButtonTitle("Not logged in. Open Triggi to continue.")
return false
}
sharedData.baseUrl = userDefaults?.valueForKey("baseUrl") as? String
sharedData.token = userDefaults?.valueForKey("token") as? String
sharedData.phoneDeviceId = userDefaults?.valueForKey("phoneDeviceId") as? String
let buttons = userDefaults?.valueForKey("buttons") as? NSArray
if (sharedData.baseUrl == nil || sharedData.token == nil || sharedData.phoneDeviceId == nil || buttons == nil) {
print("Missing data")
setButtonTitle("Not logged in. Open Triggi to continue.")
return false
}
if (buttons?.count == 0) {
print("No buttons configured")
setButtonTitle("No buttons configured. Open Triggi to continue.")
return false;
}
// More things are done with the data here
}
क्या यह स्विफ्ट 2 में है ??? – Coder256
हां, दुख की बात है कि तीसरे पक्ष के प्लगइन्स पर निर्भरता के कारण, हम अभी भी स्विफ्ट 2.3 –
से जुड़े हुए हैं जो प्लगइन? साथ ही, क्या आप कृपया 'ड्रॉबटन' और 'रंगफ्रेमनाम' के लिए फ़ंक्शंस प्रदान कर सकते हैं? – Coder256