O Xcode só pode refatorar códigos C e Objective-C. Como renomear o nome da classe swift no Xcode 6?


103

Eu criei um novo projeto de aplicativo Single View na versão beta do Xcode 6. Quero renomear classe rápida de ViewController.swiftpara algum outro nome. Mas quando eu seleciono Refatorar -> Renomear, ocorre um erro Xcode can only refactor C and Objective-C code.

insira a descrição da imagem aqui

Alguma ideia de como renomear a classe Swift no Xcode 6?

ATUALIZAR:

Finalmente, o Xcode 9 está suportando Refatoração para Swift. A Apple demorou 3 anos para adicionar esse recurso básico. Reestruturação


9
Não há nenhum atualmente. Registre um bug .
jtbandes de

19
Mais de um ano depois que isso foi perguntado, a única resposta ainda é localizar e substituir manualmente! Incrivelmente ao contrário da Apple, este é um recurso básico e essencial para um IDE
HughHughTeotl

1
AppCode pode realizar essa refatoração. Será um processo de duas etapas para sua classe definida em um .swiftarquivo. 1. Selecione o nome da classe e execute Refatorar> Renomear . 2. Selecione o .swiftarquivo e execute Refatorar> Renomear .
Daniel Zhang,

5
Mesmo depois de dois anos !!! NÃO IMPLEMENTADO???
Milad Faridnia

É realmente bom, de certa forma, traz de volta memórias de velhos tempos enquanto copia e cola 100 itens em C
LegendLength

Respostas:


25

Você pode alterar o nome de uma classe no Inspetor de arquivos no lado direito do Xcode6.

  • abra sua aula
  • vá para Inspetor de arquivo> seção Identificar e digitar
  • renomeie a classe existente no campo "nome".

Isso é tudo! Anteriormente, eu renomei manualmente o nome da classe no arquivo da classe.


11
Obrigado pela resposta, mas isso só muda o nome da classe apenas na estrutura do arquivo. Eu ainda tenho que alterar todas as instâncias do meu nome de classe em todos os lugares do código. Considerando que usar Refactor-> Rename ... usado para alterar o nome na estrutura do arquivo, bem como no código.
Khawar

Sem problemas! Eu apenas pensei que era uma espécie de solução até que a Apple fizesse algo com esse problema. Você também pode usar a função Localizar e Substituir até esse dia. Em qualquer caso, construído em Refactor-> Rename quase faz as mesmas ações.
Novo em

1
@Newone Não faz a mesma coisa. Por exemplo, Find and Replace irá pesquisar dentro de strings, e Refactor-> Rename não deve fazer isso.
Martin Epsz

15

Venho usando Find> Find & Replace in Project , não é perfeito, mas funciona.


12

Eu uso desta forma:

  • Você pode posicionar o cursor na variável que deseja renomear
  • Selecionar Editor - Editar tudo no escopo (^ ⌘E)
  • Renomeie a variável e automaticamente todas as ocorrências de variáveis ​​são editadas

Isso ajuda. Estou surpreso por ter perdido isso por tanto tempo !! :]
hdsenevi

1
Isso só funciona dentro do escopo, ou seja, não entre arquivos IIRC.
Steve Moser de

10

A partir deste tutorial.

Divida seu código iOS8 Swift

Em primeiro lugar, vamos renomear nosso View Controller para ser algo mais significativo. Abra seu arquivo ViewController.swift e substitua todas as referências a 'ViewController' por nosso novo nome, 'SearchResultsViewController'. Renomeie o arquivo também para SearchResultsViewController.swift.

Se tentar executar o aplicativo daqui, você travará. Isso ocorre porque nosso arquivo de storyboard não foi atualizado para saber sobre a nova classe! Portanto, abra o Main.storyboard, selecione seu objeto 'View Controller' na cena (o navegador do lado esquerdo) e, em seguida, selecione o Inspetor de identidade (lado direito, terceiro botão).

A partir daqui, vamos mudar a classe de 'ViewController' para 'SearchResultsViewController'. Agora devemos estar de volta aos trilhos. Verifique se o projeto ainda funciona e vamos prosseguir.


Obrigado pela resposta. Já experimentei esse método. Mas não parece ser um bom caminho. Se estou usando objetos ViewController.swift em 10 classes, tenho que renomeá-los manualmente em todas as classes. Tanta dor e perda de tempo :(
Khawar

@ Khawar- Sim, você está certo, mas pode ser que não haja outra opção agora e também o swift está em beta. não se preocupe com isso .. espero que a apple encontre outra maneira mais fácil do que (objetivo c ???) :)
iPatel

1
Estou na versão 7.2 (7C68) e renomear a refatoração ainda não é possível
Barbara R

Em 7.3 também não é possível.
ManiaChamp


2

Xcode 9

O Xcode 9 agora suporta renomeação em Swift. Isso foi anunciado na WWDC 2017.

insira a descrição da imagem aqui


Obrigado, obrigado Apple, mas renomear ainda não funciona. Agora ele está travando o Xcode.
kisileno

Verdadeiro ... A partir da versão 9.0 beta, renomear faz o Xcode travar. Mas isso é o que deve funcionar no futuro , seja quando for :)
Guy Daher
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.