2013-01-22 31 views
6

Tôi đang sử dụng khuôn khổ Magical Record để lưu cài đặt người dùng. Bây giờ, lần đầu tiên, tôi muốn lưu mọi thứ trong một chuỗi nền. Trên trang github của Magical Record là một đoạn mã ví dụ tôi không hiểu đầy đủ:Bản ghi Magical lưu trong nền

Person *person = ...; 
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){ 

    Person *localPerson = [person MR_inContext:localContext]; 

    localPerson.firstName = @"John"; 
    localPerson.lastName = @"Appleseed"; 

}]; 

Tại sao dòng đầu tiên cần thiết? Tôi không thể hoàn toàn tạo ra Người trong khối? Cảm ơn bạn!

Trả lời

12

Tất nhiên bạn có thể. Ví dụ này chỉ lấy một đối tượng person từ ngữ cảnh bên ngoài (mặc định của bạn hoặc bất kỳ thứ gì) và cung cấp cho bạn một con trỏ đến nó trong localContext để bạn có thể cập nhật nó trong nền. Nếu bạn đã tạo ra một person từ đầu bạn có thể làm một cái gì đó như thế này:

[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){ 

    Person *localPerson = [Person MR_createInContext:localContext]; 

    localPerson.firstName = @"John"; 
    localPerson.lastName = @"Appleseed"; 

}]; 

Và bạn đã hoàn tất.

PS. Lưu ý rằng MR_createInContext: là một phương thức lớp được gọi là trên Person lớp (thay vì MR_inContext: phương pháp thể hiện được gọi là trên person ví dụ).

+0

Như tôi thấy, phương pháp tôi đã viết ở trên dường như không được dùng nữa, tôi nên sử dụng phương pháp nào để lưu trong nền? Có một vài phương thức "mới" được liệt kê, nhưng không có phương thức nào trong số đó có "nền" trong tên của nó. – Linus

+0

@LinusAn Nó phụ thuộc vào phiên bản MagicalRecord mà bạn sử dụng. Bạn có thể kiểm tra [github repo ở đây] (https://github.com/magicalpanda/MagicalRecord) (Tôi tin 'saveWithBlock:' là phương pháp tương tự trong v3.x) – Alladinian

+0

Ah cảm ơn bạn rất nhiều! Sau đó, tôi sẽ sử dụng cái đó. Tôi không biết v3 đã được nêu ra, tôi tốt hơn có được phiên bản mới nhất. – Linus

1

Có, bạn có thể tạo Người cũng trong khối. Phương thức inContext: chỉ cần thiết nếu bạn tìm nạp ví dụ một Person từ một ngữ cảnh khác. Hãy coi chừng, nếu bạn tạo Người trong khối, thì bạn nên sử dụng phương thức createInContext :.

0

Lưu và tìm nạp Bản ghi Magical là Dựa theo ngữ cảnh. Vì vậy, bạn có thể tạo bản ghi trong ngữ cảnh mặc định hoặc tạo bản ghi trong ngữ cảnh mới bằng phương pháp MR_createInContext. Tuy nhiên, trong khi tìm nạp các bản ghi, bối cảnh phải giống như bạn đã tạo.

http://pthiaga.blogspot.in/2014/11/running-database-fetch-core-data-in.html