Ios 在电子邮件正文中显示应用程序和设备信息-swift

Ios 在电子邮件正文中显示应用程序和设备信息-swift,ios,swift,email,Ios,Swift,Email,如何将其转换为swift?我最起码需要的是电子邮件中附加的应用程序名称、应用程序版本和地区或国家 NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; UIDevice *currentDevice = [UIDevice currentDevice]; NSString *model = [currentDevice model]; NSString *

如何将其转换为swift?我最起码需要的是电子邮件中附加的应用程序名称、应用程序版本和地区或国家

NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
UIDevice *currentDevice = [UIDevice currentDevice];
NSString *model = [currentDevice model];
NSString *systemVersion = [currentDevice systemVersion];
NSArray *languageArray = [NSLocale preferredLanguages];
NSString *language = [languageArray objectAtIndex:0];
NSLocale *locale = [NSLocale currentLocale];
NSString *country = [locale localeIdentifier];
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
NSString *emailBody = [NSString stringWithFormat:@"\n\n\n\n\n\n\n\n\nApp Name: %@ \nModel: %@ \nSystem Version: %@ \nLanguage: %@ \nCountry: %@ \nApp Version: %@", appName, model, systemVersion, language, country, appVersion];
到目前为止我已经找到了

let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
不过,我并没有幸运地将其添加到消息正文中

这就是我目前所拥有的

@IBAction func sendMail(_ sender: AnyObject) {

    let recipients = ["support@enquinn.rocks"]
    let title = "App feedback"
    let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String


    let message = ""

    let mc: MFMailComposeViewController = MFMailComposeViewController()

    mc.mailComposeDelegate = self

    mc.setToRecipients(recipients)
    mc.setSubject(title)
    mc.setMessageBody(message, isHTML: false)

    self.present(mc, animated: true, completion: nil)

你走对了路。如果您使用的是Swift 4,您可以使用多字符串文字,并按如下方式格式化您的邮件:

let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
let appVersion = "5"


let message = """
App name: \(appName)
Version: \(appVersion)
"""
Swift 3版本:

let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
let appVersion = "5"

var message = "App name: \(appName)\n"
message += "Version: \(appVersion)"

我只是在上面的示例中硬编码了appVersion,因为您特别询问了如何将变量插入到消息中。希望对您有所帮助。

您没有转换任何代码,您的
消息
只是一个空字符串。转换所有代码,然后在不成功的地方发布一个问题是的,我意识到尽管我不知道如何添加它。另外,我正在请求帮助转换代码。您尚未将Objective-C翻译为swift,只有一行,您缺少了用于创建消息的
stringWithFormat:
的孔部分。因此,你的问题看起来很像,我有这个代码,请你创建它的Swift版本。这类问题会遭到反对并被否决。所以,把每一行Obj-c翻译成Swift。这就是我想要的,虽然我在Swift 3上,但这似乎对我不起作用。我为Swift 3添加了一个版本。