Poszukuję najlepszego sposobu na odczytanie danych z cedrów w funkcji i zapętlenie wyników po fakcie."AnyObject" nie ma członka o nazwie "contactName" Blokowanie pętli
Próbowałem go na wiele sposobów, ale wydaje się, że się odwiesił próbując dostać się do konkretnych fragmentów danych w obrębie każdego obiektu.
Oto moja konfiguracja.
func readData()->NSArray{
let entityName:String = "Properties"
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
// Specify what this will be working with
let request = NSFetchRequest(entityName: entityName)
// This will return instance of the object needed. Without which this would be
// a pain to work with. This bit saves a few steps.
request.returnsObjectsAsFaults = false;
// Get the data and put it into a variable
var results = context.executeFetchRequest(request, error: nil)
return results!
}
I nazywają go tutaj ..
var properties = Properties()
var getInfo = properties.readData()
println(getInfo)
for eachInfo:AnyObject in getInfo{
println(eachInfo)
}
I że zrzuca się coś takiego ...
<NSManagedObject: 0x7f87fa711d60> (entity: Properties; id: 0xd000000000040000 <x-coredata://F627AD12-3CEC-4117-8294-616ADEE068DC/Properties/p1> ; data: {
acreage = 0;
conditionId = 0;
contactBusinessName = nil;
contactEmail = nil;
contactName = Bob;
contactPhoneNumber = 456456456;
isFav = nil;
latitude = 0;
longitude = 0;
price = 0;
propertyCity = nil;
propertyId = nil;
propertyState = nil;
propertyStreetAddress = nil;
propertyType = 0;
propertyZip = nil;
squareFeet = 0;
year = 0;
})
I to jest wielki. Ale kiedy idę, aby uzyskać dostęp do danych w ramach poniższego kodu ...
for eachInfo:AnyObject in getInfo{
println(eachInfo.contactName)
}
Otrzymuję następujący błąd.
„«AnyObject»nie ma elementu o nazwie«ContactName»”
Jestem pewien, że coś jest proste mi brakuje, ale nie mogę go znaleźć w Internecie.
Każda pomoc lub nawet lepszy sposób byłaby bardzo doceniana.
Udzielono odpowiedzi.
Po pierwsze, Dodaj przestrzeń nazw do obiektów danych podstawowych. http://i.stack.imgur.com/qNNLo.png
Po drugie, zdecydowanie wpisz dane wyjściowe funkcji, aby dane zostały wpisane do niestandardowego obiektu. W tym przypadku jest to nazywane "Właściwości".
func readData()->Array<Properties>{
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
// Specify what this will be working with
let request = NSFetchRequest(entityName: entityName)
// This will return instance of the object needed. Without which this would be
// a pain to work with. This bit saves a few steps.
request.returnsObjectsAsFaults = false;
// Get the data and put it into a variable
var results = context.executeFetchRequest(request, error: nil)
return results! as Array<Properties>
}
Na koniec wywołaj funkcję i zapętlić dane.
var properties = Properties()
var getInfo = properties.readData()
for eachInfo in getInfo{
println(eachInfo.contactName)
}
Nawet gdy to robię, na odbierającym końcu wciąż chce traktować to jak "AnyObject". Powoduje to problemy z .. właściwości var = Properties() var GetInfo = properties.readData() dla eachInfo: Array w GetInfo { println (eachInfo.contactName) } i to powoduje błąd EXC_BAD_INSTRUCTION. właściwości var = Właściwości() var GetInfo = properties.readData() do eachInfo w GetInfo { println (eachInfo.contactName) } –
Wybrana metoda będzie działać. Muszę tylko upewnić się, że mam dodaną przestrzeń nazw podczas konfiguracji moich obiektów Coredata. Napiszę odpowiedź. –