在UIActivityViewController中使用名称共享数据

时间:2018-03-20 12:59:03

标签: ios swift uiactivityviewcontroller

我在我的应用中添加了共享功能,以分享名称,价格,数量和描述等数据。这就是我实现它的方式......

let prodObj = newProdDetails[indexPath.row]
let name = prodObj.name
let price = prodObj.mrp
let qty = prodObj.quantity
let description = prodObj.descriptions

let activityViewController:UIActivityViewController = UIActivityViewController(activityItems:  [name, price, qty, description], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)

当我在whatsapp中这样分享时,接收者得到的东西就像Box,6,500(如果名称是盒子,数量是6和价格500)。

但是当我发送邮件时,我希望接收方能够获得类似

的内容
Name: Box

Quantity: 6

Price: 500

而不仅仅是Box,6,500

我怎样才能做到这一点......?

5 个答案:

答案 0 :(得分:4)

发送活动项目的字符串,例如"Name: \(name)"

let prodObj = newProdDetails[indexPath.row]
if let name = prodObj.name,
    let price = prodObj.mrp,
    let qty = prodObj.quantity,
    let description = prodObj.descriptions  {

    let activityViewController:UIActivityViewController = UIActivityViewController(activityItems:  ["Name: \(name)", "Price: \(price)", "Quantity: \(qty)", "Description: \(description)"], applicationActivities: nil)
    self.present(activityViewController, animated: true, completion: nil)
}

答案 1 :(得分:1)

只需运行代码:

    let name = "javed"
    let price = 700
    let qty = 77

    let finalString:String = "Name:" + name + "\n" + "Quantity:" + String(qty) + "\n" + "Price:" + String(price)
    print(finalString)

<强>结果:

enter image description here

或者你已经有了字符串值:

enter image description here

答案 2 :(得分:0)

您可以尝试这样

let prodObj = newProdDetails[indexPath.row]
let name = prodObj.name
let price = prodObj.mrp
let qty = prodObj.quantity
let description = prodObj.descriptions

let finalString:String = "Name:" + name + "\n" + "Quantity:" + qty + "\n" + "Price:" + price 

let activityViewController:UIActivityViewController = UIActivityViewController(activityItems:  [finalString], applicationActivities: nil)

<强>结果:

Name: Box

Quantity: 6

Price: 500

测试100%正常工作

答案 3 :(得分:0)

你可以这样做。

let share : String = "Name: \(name) \nQuantity: \(qty) \nPrice: \(price)" 

let activityViewController:UIActivityViewController = UIActivityViewController(activityItems:  [share], applicationActivities: nil)

答案 4 :(得分:0)

发生的事情不是传递单个属性,比如名称价格,而是使用(键值对,因此您知道哪个值与哪个键关联)创建了一个字符串或字典数组,然后传递整个数组,您还可以检查是否存在值,然后仅将其添加到最终数组(根据您的要求)

let prodObj = newProdDetails[indexPath.row]

let name = prodObj.name ?? "" //this means if name is nil it will set empty string 
let price = prodObj.mrp ?? 0 
let qty = prodObj.quantity ?? 0
let description = prodObj.descriptions ?? ""

//create array from the data you get you can create a string like below
let finalArrayString =  ["Name: \(name)", "Price: \(price)", "Quantity: \(qty)", "Description: \(description)"]

//or create an array of the dictionary for using it late

let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: finalArrayString , applicationActivities: nil)

另外,在使用之前检查你的prodObj是否为零,你可以返回它的nill(根据你的要求)

还要理解为什么在从StackOverflow复制粘贴代码之前,因为它会节省你的时间,