Swift - 使用创建的plist

时间:2015-03-25 12:48:04

标签: ios swift plist

我正在为我的应用程序创建一个API Keys plist,我试图弄清楚如何创建一个函数,将这些plist值存储在可以在我的其他文件中使用的变量中。我的ApiKeys.plist看起来像这样:

Root - Dictionary - (空白)

  • Parse_App_Id - String - xxxxxxx
  • Parse_Client_Id - String - 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行。无法调用类型'(字符串,字符串)'

&&参数列表

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概念很陌生,请原谅我的明确错误和误导

1 个答案:

答案 0 :(得分:1)

我认为存在一些混乱,不仅仅是因为这个问题。

首先,您的方法希望返回一个String。

您可以将结果作为单个字符串返回:

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)"
}

或者您选择返回元组(或数组),然后根据您需要的元素访问元素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"))