2011-01-14 41 views
11

Tôi đang sử dụng mẫu Xcode này cho dữ liệu cốt lõi.iphone - thư mục ứng dụng coredata

Trên đại biểu, tôi có phương pháp này:

- (NSURL *)applicationDocumentsDirectory { 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

nhưng điều này đòi hỏi iOS4.

Tôi đang cố gắng làm cho ứng dụng tương thích với 3.0.

Vì vậy, tôi đã chuyển đổi phương pháp này để:

- (NSURL *)applicationDocumentsDirectory { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return [NSURL URLWithString:documentsDirectory]; 

} 

nhưng khi CoreData cố gắng sử dụng các URL lưu trữ trên

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyFile.sqlite"]; 
    if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 

nó bị treo trên phù hợp với thông điệp NẾU:

Các kho lưu trữ SQL CoreData chỉ hỗ trợ các URL của tệp (có /var/mobile/Applications/BB312A7E-6AE1-4BA2-AD87-6B96D8855CC6/Documents/MyFile.sqlite). '

nhưng StoreURL là NSURL!

Bất kỳ manh mối nào? Cảm ơn

Trả lời

24

Hãy thử thực hiện:

NSString *pathToYourSqliteFile = @"/your/path/here"; 
NSURL *storeURL = [NSURL fileURLWithPath: isDirectory:NO]; 

Xem nếu điều đó làm các trick.

+0

Cảm ơn! Bạn là người đàn ông!!!! – SpaceDog

+0

Mục tiêu triển khai ứng dụng của tôi là 8.0 và tính năng này đã hoạt động! Cảm ơn! –

0

Swift 3

let documentsUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first! 
Các vấn đề liên quan