2015-09-13 3 views
9

मैक में ऐप लॉगिन आइटम है या नहीं, लेकिन 10.10 में, मैं SMCopyAllJobDictionaries और SMJobCopyDictionary का उपयोग करता हूं, लेकिन इन्हें बहिष्कृत कर दिया गया है। तो उनके आधिकारिक अनुशंसित प्रतिस्थापन क्या हैं?SMCopyAllJobDideo और SMJobCopyDictionary को बहिष्कृत किया गया है, तो उनके प्रतिस्थापन क्या हैं?

उत्तर

-1

आपको प्रतिस्थापन की आवश्यकता नहीं है। SMLoginItemSetEnabled का उपयोग करें, यदि यह सफल होता है, तो मान को NSUserDefaults में संग्रहीत करें। स्टार्टअप पर, संग्रहीत मूल्य के साथ SMLoginItemSetEnabled पर कॉल करें। यदि यह विफल हो जाता है, तो डिफ़ॉल्ट को रीसेट करें, अन्यथा स्थिति अभी भी पुरानी है।

उदाहरण:

import Foundation 
import ServiceManagement 

final class LoginItem { 

    let identifier: String 

    private let nc = NSUserDefaults.standardUserDefaults() 

    init(identifier: String) { 
     self.identifier = identifier 
    } 

    var enabled: Bool { 
     return nc.boolForKey(defaultKey) 
    } 

    func setEnabled(enabled: Bool) -> Bool { 
     if SMLoginItemSetEnabled(identifier, enabled) { 
      nc.setBool(enabled, forKey: defaultKey) 
      return true 
     } 
     return false 
    } 

    func validate() -> Bool { 
     if setEnabled(enabled) { 
      return true 
     } 
     nc.removeObjectForKey(defaultKey) 
     return false 
    } 

    private var defaultKey: String { 
     return "SMLoginItem-" + identifier 
    } 
} 

बस validate स्टार्टअप/बंद राज्य पर मान्य करने के लिए कहते हैं।

+0

धन्यवाद लड़का, लेकिन मैं अन्य ऐप की लॉगिन स्थिति जांचना चाहता हूं, न कि मेरा। – GoKu

+0

मैं उलझन में हूं कि यह कैसे काम कर सकता है क्योंकि 'सत्य' के साथ 'SMLoginItemSetEnabled' को कॉल करना ठीक है, ऐप को अपनी वरीयता स्क्रीन में लॉगिन आइटम को पुनः सक्षम करने के लिए क्या करना होगा। पहली कॉल क्यों विफल हो जाएगी (क्योंकि उपयोगकर्ता ने लॉगिन आइटम मैन्युअल रूप से हटा दिया था) लेकिन दूसरा कॉल लॉगिन आइटम को पुनः इंस्टॉल करने में सफल होगा। मुझे यह कोशिश करने जा रहा है ... ;-) –

संबंधित मुद्दे