私はObjective-CのアプリケーションをSwift 3.1に変換しようとしています。また私はスイフトのチュートリアルを手伝っています。しかし、私はObj-Cでうまく動作したSwiftにforループを変換しようとすると、次のエラーに遭遇しています。以下のSwiftとObjective-Cの両方のコードを投稿し、エラーが発生しているSwiftの行にコメントしました。私は、エラー状態 Objective-CのSwift 3.1への変換エラー「Any」は変換できません
「どれが」「MSManageObject」
すべてのヘルプは大歓迎され、右方向に私を指してに変換できない for managedObject: NSManagedObject in myResults{
でエラーを取得しています。
//IN SWIFT 3.1
let context: NSManagedObjectContext? =
CoreDataHelper.shared().context
let fetchRequest = NSFetchRequest<NSFetchRequestResult>()
let entity = NSEntityDescription.entity(forEntityName:
"Exhibitors", in: context!)
fetchRequest.entity = entity
var myResults : NSArray = try!
CoreDataHelper.shared().context.fetch(fetchRequest) as NSArray
self.objects = myResults as! [Any]
if !(myResults != nil) || !((myResults.count) != nil) {
print("No Exhibitor objects found to be deleted!")
}
else {
//****Getting error 'Any' is not convertible to 'NSManagedObject'
for managedObject: NSManagedObject in myResults {
if !(managedObject.value(forKey: "fav") == "Yes") {
context?.deleteObject(managedObject)
var error: Error? = nil
// Save the object to persistent store
if !context?.save(error) {
print("Can't Save! \(error) \
(error?.localizedDescription)")
}
print("Exhibitor object deleted!")
}
}
}
//IN OBJECTIVE-C
NSManagedObjectContext *context = [[CoreDataHelper sharedHelper]
context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]
init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Exhibitors" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *myResults = [[[CoreDataHelper sharedHelper]
context] executeFetchRequest:fetchRequest error:nil];
self.objects = myResults;
if (!myResults || !myResults.count){
NSLog(@"No Exhibitor objects found to be deleted!");
}
else{
for (NSManagedObject *managedObject in myResults) {
if (![[managedObject valueForKey:@"fav"]
isEqualToString:@"Yes"]) {
[context deleteObject:managedObject];
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error,
[error localizedDescription]);
}
NSLog(@"Exhibitor object deleted!");
}
}
}
これは、@ Alistraの推奨に加えて、それを実装した後にスウィフトが提出した特定の問題を修正するために提案したものを受け入れました。 – bachma0507