2015-09-23 5 views
-1

Я реализации этого мерзавца - NSDate-TimeAgoSwift 2,0: NSBundle всегда возвращает ноль

Он имеет быстрое расширение внутри. Я потащил и падение Bundle, что поставки мерзавец в мое приложение - NSDateTimeAgo.bundle

В файле расширения им пытаются получить этот путь к файлу, но он всегда возвращает ноль СВИФТ 2.0

func NSDateTimeAgoLocalizedStrings(key: String) -> String { 

let resourcePath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
let path = resourcePath.URLByAppendingPathComponent("NSDateTimeAgo.bundle") 
let bundle = NSBundle(URL: path) 
print(bundle) -> **nil** 

return NSLocalizedString(key, tableName: "NSDateTimeAgo", bundle: bundle!, comment: "") 
} 

Какие-либо предложения?

+0

Существует ли пакет в папке документов в приложении? – trojanfoe

+0

@trojanfoe Да, я перетащил его –

+0

Мы говорим о OSX тогда? – trojanfoe

ответ

3

Пакет должен быть скопирован в ваш каталог , а не на верхний уровень вашего приложения.

Эта линия просто неправильно:

let resourcePath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 

Расслоение не в каталоге документов. Это в вашем приложении. Посмотрите, что делает фактический код (в NSDate + Extension.swift):

func NSDateTimeAgoLocalizedStrings(key: String) -> String { 

    // LOOK!!!! 
    let resourcePath = NSBundle.mainBundle().resourcePath 
    let path = resourcePath?.stringByAppendingPathComponent("NSDateTimeAgo.bundle") 
    let bundle = NSBundle(path: path!) 

    return NSLocalizedString(key, tableName: "NSDateTimeAgo", bundle: bundle!, comment: "") 
} 

В принципе, вы должны просто позволить ей сделать это. Не связывайтесь с комплектом самостоятельно. Просто установите NSDate + Extension.swift и комплект и остановите. Не меняйте код - все, что вы делаете, нарушает его.

+0

Havent увидели, что вы ответили! Позвольте мне проверить этот реальный быстрый –

+0

Мэтт, im используя swift 2.0 - stringByAppendingPathComponent - доступен. Вы можете изменить код выше? –

0

В случае принимается не работали - нашли решение -

guard let resourcePath = NSBundle.mainBundle().resourcePath else { 
     return "" 
    } 

    let path = NSURL(fileURLWithPath:resourcePath).URLByAppendingPathComponent("NSDateTimeAgo.bundle") 
    guard let bundle = NSBundle(URL: path) else { 
     return "" 
    } 

    return NSLocalizedString(key, tableName: "NSDateTimeAgo", bundle: bundle, comment: "")