tôi đã xem xét Apple:Tìm kiếm một hướng dẫn rõ ràng về NSPersistentContainer sửa đổi trong Xcode 8 với Swift 3
Xcode 8 Release ghi chú:
https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
Di chuyển sang Swift 2.3 hoặc Swift 3 từ Swift 2.2
https://swift.org/migration-guide/
Có gì mới trong lõi dữ liệu trong hệ điều hành MacOS 10.12, iOS 10,0, tvOS 10,0, và watchos 3,0
https://developer.apple.com/library/content/releasenotes/General/WhatNewCoreData2016/ReleaseNotes.html#//apple_ref/doc/uid/TP40017342-CH1-DontLinkElementID_1
Và nhiều người khác ... nhưng một trong những tài liệu mà nên có sẵn từ Apple, Hướng dẫn lập trình Core Data, chưa được cập nhật từ Swift 2.
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/FetchingObjects.html#//apple_ref/doc/uid/TP40001075-CH6-SW1
Lý tưởng nhất là tôi đang tìm kiếm một cái gì đó như thế này nhưng đối với Swift 3.
https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorial
Bất kỳ khách hàng tiềm năng nào cũng sẽ được đánh giá cao.
Nhận xét của Tom (bên dưới) Tôi đang bỏ lỡ bước nào?
1) Tạo một dự án mới "Test"
2) Chọn sử dụng CoreDate (Điều này tạo ra Test.xcdatamodeld)
này sẽ tự động cư appdelegate như sau (bình luận mặc định loại bỏ):
func applicationWillTerminate(_ application: UIApplication) {
self.saveContext()
}
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Test")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
func saveContext() {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
3) Tạo thực thể "Foo"
4) Thêm Thuộc tính "thanh" kiểu string
01.235.5) Theo ViewController.swift thêm như sau (Điều này đã được sao chép từ Apple, tôi chỉ thay thế "... sử dụng" với "in")
func findAnimals() {
let request: NSFetchRequest<Foo> = Foo.fetchRequest
do {
let searchResults = try context.fetch(request)
print(searchResults)
} catch {
print("Error with request: \(error)")
}
}
6) Thêm findAnimals() dưới override func viewDidLoad().
Tuy nhiên điều này có lỗi cụ thể:
- NSFetchRequest < Sử dụng kiểu khai báo 'NSFetchRequest'
- bối cảnh < Sử dụng chưa được giải quyết định 'bối cảnh'
7) Vì vậy, bạn quay trở lại và thêm một cái gì đó này vào hàm dưới viewController để làm cho vùng chứa có thể truy cập được (không có trong mẫu ví dụ của Apple).
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
vĩ đại chúng ta xóa 1 trong những lỗi 2 nhưng lỗi "Sử dụng kiểu khai báo 'NSFetchRequest" vẫn còn.
Và đây là nơi tôi bị kẹt. Ngay cả sau khi xem xét tất cả các tài liệu được xuất bản của Apple, tôi không thể tìm thấy một ví dụ hoàn chỉnh.
Cụ thể bạn không hiểu gì? –
Các tài liệu giới hạn ngụ ý tất cả những gì phải làm là làm cho một thực thể trong xcdatamodeld và nó sẽ tự động được công nhận. Tuy nhiên, tôi liên tục nhận được "số nhận dạng chưa được giải quyết". –
Bạn đã nhập CoreData chưa? – shallowThought