2017-01-20 16 views
0

Xcode может генерировать это от объекта Core Data:Достаточно ли fileprivate для @NSManaged переменных?

// This file was automatically generated and should not be edited. 

import Foundation 
import CoreData 

extension Media { 
    @NSManaged public var imageString: String? 
} 

Мой коллега редактировали, чтобы скрыть строку и только разоблачить URL:

extension Media { 
    @NSManaged fileprivate var imageString: String? 
    public var image: URL? { 
     return imageString != nil ? URL(string: imageString!) : nil 
    } 
} 

Is fileprivate (или private) OK, чтобы использовать в таком случае? Является ли это лучшей практикой для хранения URL-адреса в Core Data?

ответ

2

Это работает. Является ли это хорошей идеей, зависит от того, как вам нужно использовать URL.

Вы можете просто сохранить URL-адрес напрямую, не имея свойства строки. Просто сделайте свойство «преобразованным» типом в редакторе модели Core Data. Поскольку тип URL соответствует NSCoding, Core Data автоматически преобразует его в/из NSData. Вы должны указать URL-адрес свойства и прочитать URL-адреса позже.

Это хорошо , если вам не нужны объекты, основанные на URL-адресе. Вы не можете использовать трансформируемые атрибуты в префиксах выборки, поэтому с помощью преобразуемого атрибута вы не можете, например, извлечь каждый объект с URL-адресом, который содержит stackoverflow.com. Если вам нужно что-то сделать, ваш подход хороший. Если нет, преобразуемый атрибут проще.