2012-12-18 208 views
0

SIGTRAP錯誤我不斷地從這個函數對核心數據的iOS

- (void)saveShindyToDatabase 
{ 

    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
    // url = [url URLByAppendingPathComponent:@"Default Shindy Database"]; 
    self.shindyDatabase = [[UIManagedDocument alloc] initWithFileURL:url]; 

    [self.shindyDatabase setValue:self.detailView.text forKey:@"details"]; 

    if (FBSession.activeSession.isOpen) { 
     [[FBRequest requestForMe] startWithCompletionHandler: 
     ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
      if (!error) { 
       self.name = user.name; 
       self.photo.profileID = user.id; 
       self.username = user.username; 
      } 
     }]; 
    } 

    // [Guest guestWithName:self.name username:self.username photo:self.photo inManagedObjectContext:self.shindyDatabase.managedObjectContext]; 
    [self.shindyDatabase setValue:self.locationManager.location forKey:@"location"]; 
    [self.shindyDatabase setValue:self.dateAndTimePicker.date forKey:@"dateAndTime"]; 
} 

我想,當用戶點擊一個按鈕,或者在後臺執行該功能得到一個SIGTRAP錯誤。任何一個都會返回相同的錯誤。

我在做什麼錯?

回答

0

想通了。我正在調用主線程。

- (void)saveShindyToDatabase 
{ 

    dispatch_queue_t fetchQ = dispatch_queue_create("HomeViewController", nil); 
    dispatch_async(fetchQ, ^{ 
     NSArray *shindys = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; 
     [self.shindyDatabase.managedObjectContext performBlock:^{ 
      for (NSDictionary *shindyInfo in shindys) { 
       [Shindy shindyWithShindyDBInfo:shindyInfo inManagedObjectContext:self.shindyDatabase.managedObjectContext]; 

       NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
       // url = [url URLByAppendingPathComponent:@"Default Shindy Database"]; 
       self.shindyDatabase = [[UIManagedDocument alloc] initWithFileURL:url]; 

       [self.shindyDatabase setValue:self.detailView.text forKey:@"details"]; 

       if (FBSession.activeSession.isOpen) { 
        [[FBRequest requestForMe] startWithCompletionHandler: 
        ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
         if (!error) { 
          self.name = user.name; 
          self.photo.profileID = user.id; 
          self.username = user.username; 
         } 
        }]; 
       } 

       // [Guest guestWithName:self.name username:self.username photo:self.photo inManagedObjectContext:self.shindyDatabase.managedObjectContext]; 
       [self.shindyDatabase setValue:self.locationManager.location forKey:@"location"]; 
       [self.shindyDatabase setValue:self.dateAndTimePicker.date forKey:@"dateAndTime"]; 
      } 
     }]; 
    }); 
}