2012-07-01 41 views
5

Tôi hiện đang tìm kiếm thông qua các tài liệu và trang web, nhưng tôi không nhìn thấy những gì tôi đang tìm kiếm và tôi chỉ muốn khẳng định nếu những gì tôi đang tìm kiếm tồn tại :-)ios - Core Data hồ sơ cập nhật

Theo tôi được biết - dòng mã này cho phép tôi để thêm một kỷ lục cho cơ sở dữ liệu SQLite mà tôi đang hiển thị trong ứng dụng của mình thông qua Core Data:

NSManagedObject *newSoftware = [NSEntityDescription insertNewObjectForEntityForName: 

Bây giờ là có một dòng tương tự như cho phép tôi để cập nhật hồ sơ tôi đang làm?

giống như thế này?

NSManagedObject *newSoftware = [NSEntityDescription updateCurrentObjectForEntityForName: 

Cảm ơn bạn rất nhiều vì những thông tin phản hồi :-)

Trả lời

8

Đây là câu trả lời trước đây của tôi về nó. Nó khá chi tiết để hiểu những gì đang xảy ra.

How to update existing object in Core Data?

Dựa trên fumoboy007 bình luận, bạn phải cập nhật đối tượng máng KVC của bạn nếu bạn chưa thiết lập một lớp con cho đối tượng quản lý của bạn. Nếu bạn chưa có tôi đề nghị để tạo ra nó. Mã này trông sạch hơn vì bạn có thể acess một đối tượng được quản lý thông qua các thuộc tính.

Dưới đây là một liên kết trên nó:

organising-core-data-for-ios

+0

Cảm ơn câu trả lời chi tiết - Tôi đã nhận nó :-) –

+0

Xin chào, tôi vẫn còn một câu hỏi xin lỗi bạn không quan tâm :-) Thay vì @ "title ==% @", @ "Some Title" ]; như trong liên kết bạn đã cho tôi, tôi sử dụng @ "name ==% @", self.appNameTxtFld.text]; Bây giờ vấn đề là tất cả các hàng thông tin của tôi trong mảng nhận được thay đổi không chỉ là một trong những tôi chọn. Làm cách nào tôi có thể cụ thể hơn trong hành động của mình? –

+0

@JeffKranenburg Xin lỗi, tôi không thể hiểu, có thể thêm chỉnh sửa cho câu trả lời của bạn và giải thích nó ở đó. Tôi sẽ cố gắng giúp bạn. Cảm ơn. –

11

Để cập nhật một bản ghi, bạn chỉ cần cập nhật thuộc tính 's NSManagedObject. Nếu bạn đang sử dụng CoreData, bạn cần có NSManagedObject giây cho mỗi "bảng" của mình. Nhận một tham chiếu đến một đối tượng sau khi bạn truy vấn cơ sở dữ liệu (sử dụng NSFetchRequest). Sau đó, bạn có thể cập nhật bản ghi như sau: myObject.firstName = "John"; Khi bạn đã sẵn sàng cập nhật đối tượng trong cơ sở dữ liệu Sqlite, chỉ cần gọi phương thức save của NSManagedContext. Tôi đề nghị chơi với một ứng dụng mẫu CoreData (giống như một ứng dụng mặc định được tạo ra bởi Xcode) để hiểu điều này tốt hơn.

+2

Lưu ý: 'myObject.firstName = @ "John";' chỉ hoạt động nếu bạn đã tạo một lớp con NSManagedObject. Nếu bạn không làm điều đó, thì bạn sẽ cần phải thực hiện '[myObject setValue: @" John "forKey: @" firstName "]'. – fumoboy007

+1

Tôi đã thiết lập điều này trước khi tôi đặt câu hỏi, nhưng thay vì cập nhật một bản ghi, nó đã thêm nó như một câu hỏi mới. –

+0

Được giải thích rõ ràng, với mã ngoài. – andyPaul

Các vấn đề liên quan