Swift - 使用创建的 plist
Swift - Using created plist
我正在为我的应用程序创建一个 API Keys plist,我正在尝试弄清楚如何创建一个函数,将这些 plist 值存储在可以在我的其他文件中使用的变量中。我的 ApiKeys.plist
看起来像这样:
根 - 字典 -(空白)
- Parse_App_Id - 字符串 - xxxxxxx
- Parse_Client_Id - 字符串 - xxxxxx
然后我有一个 ApiKeys.swift
文件,其中存储了我的函数:
import Foundation
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return parseAppId && parseClientID
}
旁注:我使用教程来构建此函数,我很好奇这是否是设置函数以存储两个 plist 键的最佳方式。
第一个错误 出现在 return
行。无法调用 &&
类型为“(String, String)”的参数列表
AppDelegate.swift:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
Parse.setApplicationId(valueForAPIKey.(keyname: "ParseAppId")), clientKey: valueForAPIKey.(keyname:"ParseClientId"))
PFFacebookUtils.initializeFacebook()
return true
}
第二个错误: valueForAPIKey 处需要 ',' 分隔符。(
keyname: "ParseAppID")
我对 plist
概念很陌生,所以请原谅我明显的错误和误导
我觉得有些混乱,不仅仅是 plist 的问题。
首先,您的方法需要 return 一个字符串。
您的 return 您的结果作为单个字符串 :
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return "\(parseAppId) \(parseClientID)"
}
或者您选择 return 元组(或数组),您将根据需要访问元素 0 或 1。
func valueForAPIKey(#keyname:String) -> (String, String) {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return (parseAppId, parseClientID)
}
但是,既然你用的是参数keyname
,为什么不用呢?
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let id : String = plist?.objectForKey(keyname) as String
return id
}
然后你就可以像这样使用它了:
Parse.setApplicationId(valueForAPIKey("Parse_App_Id"), clientKey : valueForAPIKey("Parse_Client_Id"))
我正在为我的应用程序创建一个 API Keys plist,我正在尝试弄清楚如何创建一个函数,将这些 plist 值存储在可以在我的其他文件中使用的变量中。我的 ApiKeys.plist
看起来像这样:
根 - 字典 -(空白)
- Parse_App_Id - 字符串 - xxxxxxx
- Parse_Client_Id - 字符串 - xxxxxx
然后我有一个 ApiKeys.swift
文件,其中存储了我的函数:
import Foundation
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return parseAppId && parseClientID
}
旁注:我使用教程来构建此函数,我很好奇这是否是设置函数以存储两个 plist 键的最佳方式。
第一个错误 出现在 return
行。无法调用 &&
类型为“(String, String)”的参数列表
AppDelegate.swift:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
Parse.setApplicationId(valueForAPIKey.(keyname: "ParseAppId")), clientKey: valueForAPIKey.(keyname:"ParseClientId"))
PFFacebookUtils.initializeFacebook()
return true
}
第二个错误: valueForAPIKey 处需要 ',' 分隔符。(
keyname: "ParseAppID")
我对 plist
概念很陌生,所以请原谅我明显的错误和误导
我觉得有些混乱,不仅仅是 plist 的问题。
首先,您的方法需要 return 一个字符串。
您的 return 您的结果作为单个字符串 :
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return "\(parseAppId) \(parseClientID)"
}
或者您选择 return 元组(或数组),您将根据需要访问元素 0 或 1。
func valueForAPIKey(#keyname:String) -> (String, String) {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let parseAppId:String = plist?.objectForKey("Parse_App_Id") as String
let parseClientId:String = plist?.objectForKey("Parse_Client_Id") as String
return (parseAppId, parseClientID)
}
但是,既然你用的是参数keyname
,为什么不用呢?
func valueForAPIKey(#keyname:String) -> String {
let filePath = NSBundle.mainBundle().pathForResource("ApiKeys", ofType: "plist")
let plist = NSDictionary(contentsOfFile: filePath!)
let id : String = plist?.objectForKey(keyname) as String
return id
}
然后你就可以像这样使用它了:
Parse.setApplicationId(valueForAPIKey("Parse_App_Id"), clientKey : valueForAPIKey("Parse_Client_Id"))