xcode4 file not found when is already in project - iphone

I'm using touch JSON, I imported and copied the files inside my folder,
then #import "CJSONDeserializer.h" which is recognized by the autocompleter, but when building, it appears that CJSONDeserializer file not found
So what am I doing wrong while importing, or how to make it recognize the files?

My best guess is that you have not added the header files to your target. To do so go to your project navigator top level, select it, select target, and go to the "search paths" sections, then in the header search path add the path to the CJSONDeserializer.h relative to where your .xcodeproject is.

Where did you place the imported files? make sure you copy the files to the project and not just reference them. Also, go to Build Settings in xcode when clicking the main project, try to edit the option Header Search Paths with the path of the imported files

While copying file have checked the box asking for copy to this folder. If yes then delete and try again. This issue has encountered several times while importing file or copying.

Related

'Build input file cannot be found' Swift 4.2, Xcode 10.0

I am getting the following error when building in Xcode 10.0 with swift 4.2:
Moving the folders around the inspector can cause the error "Build input file cannot be found"
SWIFT 5
In Swift 5, the error came up but the identity showed no errors.
Go under build settings and select packaging.
Delete the current paths for Debug and Release and enter your new path where the info.plist is kept.
For example [APPROJECTNAME]/[THEINFOPLISTFOLDER]/info.plist
In the screenshot below, the path is API-client/Resources/info.plist
SWIFT 4
To fix it, go to the general tab and under identity reselect the info.plist that you like
Build input file cannot be found
How To fix This issue :
Go in the project-navigator, select your project
Select Build Phases tab
In Compile Sources section, check for the file(s) that Xcode is demanding of
Notice that the file(s) have the wrong path, and delete them by clicking on the minus icon
Re-add the file(s) by clicking the plus icon and search in the project.
Product > Clean Build Folder
Build
A most common error when you move Info.plist in another folder.
To fix this error you can select the Info.plist and choose Relevant to Project from file inspector.
Next step, go to Build settings and search for info.plist and fix the file path.
I got this issue after resolving the conflicts in project.pbxproj.
Step 1: Removing the "Build input files cannot be found" files from BuildPhases -> Copy Bundle resources and adding them back worked for me.
If the above Step 1 doesn't work, search for "Recovered References" folder in your project structure and remove the files that are causing this issue and repeat Step 1
For build file missing i.e. info.Plist :
Under Project navigator,
select(click) Project name and icon,
In middle pane, click target
click blue General tab on top
click / Targets
click [Choose info.plist File] button
in pop-up window, select the info.Plist file
I had the same problem with a missing view controller file that couldn't be found after cloning a project in a new folder. I deleted the view controller but the compiler continue asking for a file in a path that doesn't exist anymore.
I solved the problem as follows:
Select the project target in the Project-navigator,
Go to Build Phases tab
In Compile Sources section, check for the file that the compiler is asking for. You can filter by the name at the top right of the screen.
The deleted file is still on the list with a wrong path, delete it by clicking on the minus icon. You have to do it for all the target you may have.
In the case that you still use the file, add it on a new path by clicking the plus icon.
Clean Build Folder in the Product Menu.
It should work now :D
(Objective-C Project / Xcode Version 10.2.1 (10E1001))
This works if you get the 'Build input file cannot be found error message' and also have files that are red in the inspector:
Open your project folder in Finder
Make a copy of the affected files onto your Desktop
Delete the affected files in Xcode and then close Xcode
Re-Open Xcode and drag your copied files into your Xcode project
This worked for me. Before I got the error message I was re-organising files in the file inspector which gave me that error message and made the files I was moving around turn red. Hope this helps !!
I tried going to Compile Sources in the Build Phases tab and deleting and re-adding the selected file (and cleaning and rebuilding)but it didn't work :( Instead, this following answer worked for me if you get the 'Build input file cannot be found' error message:
Delete the affected files in Xcode (I right-clicked->Delete'd in the Navigator)
Re-add the affected file (mine was .mlmodel) and I selected "Copy items if needed" under Destination.
Cmd-shift-k to clean and then Cmd-b to build
and voila! The file was recognized and error gone!
Hope this helps!
For me this worked:
Click the app name under TARGETS
Build Settings -> Packaging -> Info.plist File
There change the file location of the Info.plist File to the new location.
DemoApp/Info.plist to DemoApp/Assets/Info.plist
I got this error when I moved my Info.plist into a folder.
When I took Info.plist out of the folder, I no longer got an error.
Change the build setting to legacy
First, open your project in XCode by double-clicking on ios/<YourApp.xcodeproj>
Then go to File > Project Settings...
Change the Build System to Legacy Build System in Per-User Project Settings:
Select general tab and under identity select the info.plist you want for your development
For me something totally different worked:
Go to Target>Build Settings>Architectures
My valid architectures before: arm64 arm64e armv7 armv7s (Defaults)
Changed it to: armv7 i386 arm64 armv7s
In my case I got this error when I renamed a ViewController name using Refactor. The view controller name occurrences were changed but the real file not.
I tried to do what #ajji said but it didn't work. So I changed the name of the real file. After that all worked like a charm
If your file(s) - that couldn't find - icon color is pale. And you right click on it and "Show in Finder" does not open Finder. It means your file name is not same as what you see in the Navigator.
to Solve it, go to where your file exist, and change its name to be same as what you see in the Navigator.
I also faced same issue while building my xcode project - "Build input file cannot be found:"
Cause: I renamed my entire project but not the build setting.
Solution: In my project's build setting--> Packaging, I updated the path of the info.plist file. Now working fine.
If all else fails:
In Xcode. Remove references of files in question from your project.
Open your project.pbxproj file as a file in Xcode. This is in .xcodeproj
Delete all lines containing the name of said files. Save.
Back in Xcode. Re-add files to your project in Xcode.
In my case the file wasn't at the right path, Xcode was expecting to find the input file at a path like /Users/Malloc/Projects/MyProject/Info.plist while in reality the file was located at a different path like /Users/Malloc/Projects/MyProject/Subfolder/Info.plist.
A quick fix to this is to simply right click on the file then select Show in Finder, then drag the file to the correct path Xcode is expecting.
I got this error when i renamed a ViewController name using "Refactor". The view controller name occurrences were changed but an old reference was somewhere still existing.
Deleting derived data & Clean build folder worked for me.
Here's how to delete Derived data:
File>Workspace settings> Click arrow & remove all folders inside Derived Data.
In my case, it was due to localization.
Here's how to fix it.
How to localise a string inside the iOS info.plist file?
Update for Projects w/ Swift Packages
How did the errors happen?
I ran into this issue when I had imported Swift Packages into my project but later cleaned DerivedData to fix an unrelated app caching issue. My existing project was not a local Swift Package but an iOS app project.
Note that we can still encounter the same issue in local Swift Package projects.
What is the reason for the errors?
Swift Packages are checked out into DerivedData and are not referenced from the ModuleCache.noindex subfolder. Thus, cleaning the app's folder in DerivedData or DerivedData itself breaks dependency resolution within Xcode for Swift Packages.
This is a misleading build error since there may be nothing wrong with the app code you've written or your dependency resolution graph. The only thing required is to refresh the dependencies.
How can I resolve the build errors?
Xcode now has nice options within the IDE itself to resolve Swift Packages. These options trigger a new checkout into DerivedData:
We can use three options, as shown in the image above depending on our use case:
Reset Package Caches: Trigger a re-install of your existing Package dependencies w/ same versions.
Resolve Package Versions: Use this option for updating Package checkouts when fixing Package Versions for cross-compatibility (in Project Settings).
Update to Latest Package Versions: Use this to update all Swift Package dependencies to the latest versions. This option may be a local breaking change if the API changes.
NOTE: Apple's documentation recommends to use Xcode for dependency resolution when working with Xcode projects excluding CLTs.
Other solutions
We can also fix the error by restarting Xcode, but I find this step breaks my workflow and is tedious.
If we are running from the command line (local Swift Package executable), we can stick with a swift build variant without jumping to Xcode at all (Source). swift build doesn't work as easily out of the box in other projects, however.
Use xcodebuild:
xcodebuild -resolvePackageDependencies
I prefer staying in Xcode for simplicity but YMMV.
Goto Project Navigator.
Click on project.
Click on Targets.
Goto Build Settings.
Search Prefix.pch.
Change the location of this file (input the updated location).
This will resolve the issue as mine.
Had the same problem with swift files. Select files that are not recognised and Delete with Remove Reference option. Right click in the folder and Add files again.
In some cases, if you Refactor your existing ViewController files or any other files using right-click -> Refactor option within the Xcode workspace then on compiling this error will come since the File name is not changed in original place but reference is updated, so in that you need to also manually change the old file to new name.
When I checked out the code first time from the Git I faced the same issue for few pod file. Updating the pod file solved my issue.
Open the project folder in the terminal window
Run 'pod update'
Clean the XCode and run.
I just had to open the project in finder and drag/drop the appropriate files in the project folder
Build input file cannot be found
How to fix this issue?
My Approach:
1.From Project Navigator ->Files ->Add Files to Lowes ->In Finder View, check to which folder this lost referenced file is moved
to and check with your team members if anyone moved it for a reason.If it occurred by mistake
then follow below steps
2.From Project navigator, directly tap on the file which is causing issue.This is the same file that XCode shows as not found in
error .So clearly this file has lost reference and we need to
restore it back
3.The Swift bird folder icon appears in light red color which is an indication of lost reference
4.Right click on it and Delete it
5.Next from Project navigator -> Files ->Add Files to Lowes -> Finder View go to the folder where this referenced file is moved to
and tap on ADD button in popup window
6.Now if you look at the Project Navigator this file swift bird icon appears in bright red , but you will also find an extra file
with the same name at the top of the Project Navigator
7.Make sure you have this file in the right folder if not move it to right folder
8.Now right click to delete the very top redundant file, here do not select " Move to Trash" option.Just select "Remove References" option
This fixed my issue.
Adjust the file path according to that provided in the Xcode Error
My issue was a missing SettingsController file.
I copied a file from projectA to projectB but forgot to tick Copy items if needed. Unbeknownst to me a couple of weeks later when I deleted projectA the SettingsController file in projectB got deleted along with it. Afterwards in projectB the error Build input file cannot be found ... path/Folder/toSomeFile was shown.
To fix it I closed Xcode, went to the main folder that it was in, opened the folder and right clicked on the blue Xcode icon with the extension .xcodeproj, then I choose Show Package Contents
From there I double clicked on the project.pbxproj icon
Once the project.pbxproj file was opened I pressed command+f and in the search field I entered the path part of the error path/Folder/toSomeFile
It took me to 1-2 lines of code that looked like this
Once I deleted those 1-2 lines, when I went back to the projectB and opened it the error was gone.
Just for a little more clarity the exact path of the error was whogotgame_42/whogotgame/Controllers/SettingsController.swift. So that is what I exactly entered in the project.pbxproj search field to get to those 1-2 lines that you see in the picture.
I got this error when I put the Info.plist file inside a folder. Then when I extracted the file to public view, the error went away.

How to set Header Search Path according to .h and .m

It is a very basic question, But i did not find solution...
I am trying to import a .h file from the integrated project in to my project. It says SpeechToTextModule.h file not found
I go through these links..
Xcode 4.2 how include one project into another one?
What is Header Search Path in Xcode 4.3? How to use it?
http://iphoneincubator.com/blog/xcode/how-to-add-multiple-static-library-files-with-different-architectures-to-xcode
My project Architecture:
I am trying to import the "SpeechToTextModule.h" in "ViewController.h"
see the above image once .. i selected speechToText.xcodeproj then "show in Finder" then "Get Info" i got following path
/Users/stellent/Documents/Sppech2Text/Speech2ooText/3rd Party
i placed the above path in Header Search Paths
is this correct?
I set my header search paths in both Projects and Targets also, and i tried in both recursive and non-recursive
i given all these links like below image
This is my project structure:
Copy SpeechToText Project and put it inside folder containing Speech2ooText project.
Now Drag and drop this (SpeechToText) project inside Speech2ooText Project.
Go to Build Settings of Speech2ooText--> Header Search Paths and add this path
${SRCROOT}/3rd Party
${SRCROOT} --> it is the path to your main project (Speech2ooText in your case) and by
giving '/3rd Party' we are telling headers are inside this folder.

How to rename the folder name in xcode project with out corrupting the files

In my xcode project i have created a folder manually named "MyClasses" to place the newly added files/classes to this folder.
Now i have nearly 30 classes in this folder.
when i renamed this folder , all the files in this folder are gets Erased.
Now i need to rename the folder to "ViewControllerClasses".
But i lost 30 .h, .m, xib files. [lucky i have a copy & and zip file]
How to rename the folder with out corrupting the files.
Renamed it to myviewcontrollerclasswes
When i renamed
Two Solutions
Method_1. Try Manual editing:
« Drag your MedChart.xcodeproj to TextWrangler (or any text editor)
« Use find button to find "FolderName" (Your folder name)
« Replace all with new name.
« In some project you may notice header search path problem...goto header search path and replace with new name.
Method_2. Use Xcode to choose base folder:
Rename folder in finder then use Xcode to choose same folder.
NOTE as of 2017:
Now Xcode 9 synchronises the folder and the project hierarchy automatically.
NOTE as of 2013:
Duplicate and rename Xcode project & associated folders
The "folders" what you see in XCode under your project file are not real folders in the file system, only virtual folders administered in the .xcodeproj file. You can organize your files in the project folder independently from their location in the file system. Some prefers to map the file system folder structure inside the project folder structure, some others store all source files in one big folder in the file system and organize them only in the project folders: it's rather a question of preference.
However if you rename/move physically the files in the file system, you will have to delete and re-add them to your project since XCode will not know where to find them. Pay attention not to delete them physically only remove them from XCode project, then re-add them and reorganize as you want.
One more thing to note: if you are using version control system you will have to inform also its client (svn or git most likely) that you have renamed/moved your files. If you want to keep file revision history it will be a good idea to issue the copy/move command explicitly to the version control otherwise it will treat your files as deleted from the old location and added as new in the new location.
In case anyone is still having trouble with this:
Select the folder or file in the left-side bar of XCode corresponding to the folder you want to rename (for me I renamed the folder containing all my files so I selected the topmost folder)
On the right-side bar, below where it says 'Location', click the folder icon.
In the file explorer that opens up rename the existing folder to whatever name you'd like it to be, then afterwards select it and press 'Ok'.
XCode should update the file locations accordingly.
Keep in mind that if you rename something which contains a file that is hard-coded as a certain path in your build settings, XCode will throw an error. You'll have to manually change those paths in your build settings.
This worked for me, hope it works for you too.
You should just run a search and replace on the project file (if you are working with version control and with other developers you will have seen this file a lot without a doubt), it's the project.pbxproj file located inside the xxxxxxxx.xcodeproj file.
Just right click (Control + Click) on the file and select "Show Package Contents" to find the xcodeproj file.
I still find it easier than all these methods to simply create a new folder in your file navigator and then drag your files from the other folder into it. Sometimes the simplest way is the best way. It literally takes me 10 seconds and I don't need to leave Xcode.

Three20 HEADER_SEARCH_PATHS strange behaviours

In one of my Three20 project, I have the HEADER_SEARCH_PATHS
HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/../three20 $(BUILT_PRODUCTS_DIR)/../../three20
But according to this: https://github.com/facebook/three20
I have must the following line in the path..
../three20/Build/Products/three20
I have re-created a project using ttmodule.py and confirm ../three20/Build/Products/three20 is the default but I am not sure why my existing project left it out.
Now the issue is:
Q. Why the project can build without error (Simulator/Device), what do you think is the reason?
in pre xcode 4 days the build folder would be under the project source directory which made sense to add a search header in a relative manner.
Three20 copies the header files into a specific place as part of a copy build phase.
Since xcode4 is out the build directory moved completely out of the project source tree into a temporary place configured as $(BUILT_PRODUCTS_DIR).
The reason you see 2 directories is because xcode generates 2 different paths for Archive builds and all the other kinds of builds (Run/Debug etc...)
$(BUILT_PRODUCTS_DIR)/../three20 $(BUILT_PRODUCTS_DIR)/../../three20
Notice that the manual instruction tells you to find that directory but it doesn't tell you where it is:
Finally, we need to tell your project where to find the Three20 headers. Open your "Project Settings" and go to the "Build" tab. Look for "Header Search Paths" and double-click it. Add the relative path from your project's directory to the "three20/Build/Products/three20" directory.

Eclipse: How to add an existing source folder?

I have a directory called c:\RemoteSrc . Under this there are 3 directories which are currently source folders (I think? the icon is an open folder with a little orange grid in it) in my Eclipse project. I have dropped a new directory under c:\RemoteSrc which I also want to add to my project.
BUT
If I right click on my project and go "Build Path..." -> "Link Source" and try to add it it tells me "Folder already exists with a different case". Yes i KNOW that the folder already exists THATS WHY IM TRYING TO ADD IT.
I think all you need to do is refresh the project. Eclipse does not automatically pick up folders (or files) dropped into it's project directory.
A screen capture might help, but if the GUI is un-cooperative, you can:
close Eclipse
open the .classpath file which defines your project (it may be located in your workspace)
see if you can define a new classpathentry of kind "src": this is not the easy method, but that may give you an idea why the GUI refuses to define the same entry.
For Linked Sources, you should have something like the following in your .classpath
<classpathentry kind="src" path="module_name"/>
With a corresponding matching entry (within <linkedResources>)in your .project
<link>
<name>module_name</name>
<type>2</type>
<location>path/to/your/module</location>
</link>
NOTE: Removing a linked project doesn't necessarily remove it from the project.
No need to close Eclipse.
Open .project file using Notepad++, find link to the existing source/folder and delete it. Save the file.
Refresh the project in Eclipse.
Now you should be able to link it again.
I had a problem where I had created a /src directory in my working directory and then wanted to link another directory with additional files to import. The "existing directory" turned out to be because the directory I was trying to link was also called "/src", even though the path was different. I guess Eclipse can't have two /src directories in the same project, similar to trying to mount two file systems at the same node. I rearranged the directories so there was only one /src, and all was well.
There were conflicts when I tried to update my project which resulted in creation of multiple .classpath files.. SO removing the copies and reverting the latest .classpath file and then refreshing/rebuilding project ,solved the issue for me.
Hope it helps!
Sometimes the simple refresh (Greg Adamski's answer) does not work, e.g. because the source folder is not in the src-directory (in my case, I had to reference Swagger auto-generated code which was located deep in the target/.... directory after a Maven Build).
In this case, right click the project, open the 'Build Path' -->'Configure Build Path' dialogue, select the 'Source' tab and select your additional source folder via the 'Add Folder' button.