Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode 4.4 unable to rename classes/variables

On both Xcode 4.4 and 4.4.1 I'm experiencing the same issue in that with the specific project I'm working on, I don't seem to be able to rename any classes or variables from the Refactor menu option.

Each time I try and do a rename, I type in the new name for the class/variable and click Preview at which point the bottom left begins a spinner with Finding files.... However, I then get a message saying:

The selection is not a type that can be renamed.

Make a different selection and try again.

I'm pretty sure that this is not an issue with my specific install of Xcode, because I can refactor other projects fine, it's just that I can't seem to be able to refactor this specific project.

Anyone with any ideas? I don't have any particularly exotic configuration for this project, it just seems to be a random affliction. I've deleted all of my derived data and re-indexed, but that doesn't seem to help.

Since it works OK in other projects, I'm thinking one thing I could try to do is re-generate the actual project file(s) itself. I don't know if there is a way to do this automatically?

like image 681
Jonathan Ellis Avatar asked Aug 10 '12 14:08

Jonathan Ellis


3 Answers

If they're in dropbox get them out of there. It mangles project files. I've had it happen numerous times and at times it makes refactoring > renaming not work.

like image 171
smileBot Avatar answered Nov 18 '22 12:11

smileBot


I have managed to solve this issue after trying many different things (tweaking project settings, pch, etc.) and it turns out there was a very simple (and totally counter-intuitive) method of fixing this issue.

All I have done is:-

  1. Copy my entire project folder (so from Project to Project Copy).
  2. Move Project (the original folder) to trash.
  3. Rename Project Copy to Project.

Mysteriously, everything now works fine.

I really cannot figure out why this works. As mentioned previously, I had already deleted all derived data, etc. so I don't know why this should make things spontaneously work, but it does.

Would appreciate anyone who is able to shed some light on this as it does expose just how fiddly Xcode can be, and any understanding of what goes on under the hood is always beneficial.

like image 43
Jonathan Ellis Avatar answered Nov 18 '22 12:11

Jonathan Ellis


Sounds like a buggered index.

I usually use the nuke from space option to delete everything in the derived data directory.

Unless you have changed it (I change mine to /tmp/bbum-derived), it'll be at:

~/Library/Developer/Xcode/DerivedData

Thus, I'll quit Xcode and do:

rm -rf ~/Library/Developer/Xcode/DerivedData

Yes, it is a bit brute force, but it works. You can likely force Xcode to rebuild the index from the UI, but I never bother. Of course, I'm also installing quite a few "odd" builds of this and that as a part of my day job...

(that is an rm -rf. It means "nuke everything and don't ask" in unix parlance. It is dangerous. Do not mistype that command.)

like image 2
bbum Avatar answered Nov 18 '22 14:11

bbum