0
我需要一些幫助。我的帳戶下有兩個應用程序。在兩個iOS應用之間傳遞自定義對象
我需要將自定義對象從應用程序A傳遞給應用程序B.如何使用應用程序組來執行此操作?
我看到使用URL方案是一種古老的做法。
那麼傳遞數據兩個應用程序的最新方式是什麼?
我需要一些幫助。我的帳戶下有兩個應用程序。在兩個iOS應用之間傳遞自定義對象
我需要將自定義對象從應用程序A傳遞給應用程序B.如何使用應用程序組來執行此操作?
我看到使用URL方案是一種古老的做法。
那麼傳遞數據兩個應用程序的最新方式是什麼?
在App A(保存對象)
在你的對象類,則需要延長你想分享的課程NSObject and NSCoding
class Person : NSObject, NSCoding {
var nom: String
var prenom: String
required init(name: String, prenom: String) {
self.nom = name
self.prenom = prenom
}
required init(coder decoder: NSCoder) {
self.nom = decoder.decodeObject(forKey: "name") as? String ?? ""
self.prenom = decoder.decodeObject(forKey: "prenom") as? String ?? ""
}
func encode(with coder: NSCoder) {
coder.encode(nom, forKey: "nom")
coder.encode(prenom, forKey: "prenom")
}
}
保存數據從您的應用
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let person = Person(name: "Ugo", prenom: "Marinelli")
saveData(person: person)
}
func saveData(person : Person){
//Map Class to recognize it
NSKeyedArchiver.setClassName("Person", for: Person.self)
//Encode the object
let personEncoded = NSKeyedArchiver.archivedData(withRootObject: person)
//Push the object to the App Group
UserDefaults(suiteName: "group.tag.testAppGroup")!.set(personEncoded, forKey: "FirstLaunch")
}
在你的應用B(GET對象)
添加相同的應用程序組作爲應用程序A(見1.1 )
在視圖控制器中,您想獲取應用程序A對象:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Class Mapping
NSKeyedUnarchiver.setClass(Person.self, forClassName: "Person")
//Get The encoded data from App Group
let personEncoded = UserDefaults(suiteName: "group.tag.testAppGroup")!.object(forKey: "FirstLaunch") as! NSData
//Decode to get our Person object
let personDecoded = NSKeyedUnarchiver.unarchiveObject(with: personEncoded as Data) as? Person
print(personDecoded?.prenom)
}
請注意,您必須實現文件在您的Person類,最好的做法是在它
'1與您的模型來創建自己的框架。 UIPasteboard','2.AirDrop','3。 URL Scheme','4。應用程序擴展程序https://lionhylra.wordpress.com/2015/09/17/inter-app-communication-in-ios/ – TonyMkenu
如果您的應用程序在同一個應用程序組中,則可以在應用程序之間共享數據(iOS8 +) http://stackoverflow.com/questions/9425706/share-data-between-two-or-more-iphone-applications –