Core Data No Longer Updating Sqlite Schema - iphone

I am using core data for my app and I never had any problems adding or removing columns until recently. But now even if I make changes to my xcdatamodel and generate new and updated entity h/m files, sqlite doesn't seem to be picking up the changes. I actually went over to the documents folder and inspected the create statement for the relevant tables in sqlite3 and I was able to confirm that the columns I added were missing.
I removed and redeployed the app several times to no avail. Is it possible to do something to the app to make it disregard any schema changes being made through xcdatamodel? I guess another thing I should mention is I recently started putting my entire projects folder in CVS so I wonder if something got messed up in the checkin and check out process.

Sorry. I feel like an idiot. A combination of "Reset Content and Settings" on the Simulator and a "Clean All Targets" in xcode seems to have fixed it.

Related

How to properly delete and re-add Entity Data Model

newbie to Entity Framework here. Using VS 2010 and SQL Server 2008 express DB.
I was having trouble refreshing an Entity Data Model after adding new tables. So, I followed a suggestion I found here to just delete and regenerate the model.
I get to the "Choose Your Data Connection" section of the Entity Data Model Wizard and "Save entity connection settings in Web.config as:" is checked. However, my existing name has a 1 appended to it. For example MyDatabaseEntities is now MyDatabaseEntities1. Of course, I don't want the "1" appended. I killed the existing connection string in Web.config and removed all references to that name in my solution. Yet when I try to continue I'm presented with the following error:
"'MyDatabaseEntites' conflicts with an existing property name in the Application Settings. Please choose a different name"
I can't find a reference to that name anywhere in the solution. I can uncheck that option and it will continue, but it STILL won't add two of the tables in the database. Next, I completely shut everything down, rebooted, and tried again. This time I didn't get the error above, but two of my three new tables still do not get added to the edmx model.
Any ideas are appreciated. Also this seems like it's still pretty buggy even in VS2010/.NET 4. Help restore my faith...I feel like abandoning Entity Framework at this point. Based on my experience so far and some of the other issues posted here, I feel like I'm going to spend more time chasing Entity Framework strangeness than writing useful code.
UPDATE: I found a resolution. The designer doesn't display errors. You have have to look in the native XML (edmx file) to see the errors. See here: ADO.NET Entity Framework: Update Wizard will not add tables
The error is caused by leftover connection strings in settings in "App.Config" file (see solution explorer) and it's in this section:
"connectionStrings" (surrounded by angle brackets)
Just delete it from there.
Restart IIS if you develop web app.
Restart Visual Studio After Deleting The EntityDataModel Connection
String Line from web.config or app.config
Add New Entity Data Model and rename it like old name,
I don't know the specific answer to your problem, but I think I can recommend an approach that will clear up this conflict.
I generally break my EF work into a separate library. If I'm working on Cyberdyne.Terminator, I make an EF class library called Cyberdyne.Terminator.Data. That way, if you want to blow away the model and start over, everything is separate from your dependent files, and in particular, your web.config.
None of this is likely to fix the missing tables, probably. The one thing I've seen where this happens is if I add a table, and then delete it. It will not appear again in the "Add Tables" dialog (and you have to rename it to get it to show). But I thought that was fixed in EF 4.0. Dunno. If the problem persists you might try renaming the table, re-adding it, and then renaming it back if it shows up.
EF is a pain in the ass to be sure. The only thing I can tell you is that I've generally had to work through these headaches, learn the issue, and never be bothered by them again. If you can't stand EF, you might also look at NHibernate - I have a very strong impression of that as well.
Double check your connection strings, and keep scrolling to the right. Most often, when this happens to me, Visual Studio has appended a connection string behind another. I've done this a couple times, and wondered where my app config was (no, there is no app config, just web config in mvc), so the dialog is a little confusing. Sure enough, most likely that connection string is lurking directly behind another!
Just press
Ctrl+F
keys and in dropdown list select 'EntireSolution/CurrentProject', then press enter. where ever this name generated it will show you.
I get into web.config file. so delete that generated complete connection line from there. and re add it again. Then hope you may not get this message again.Thank you..
Actually this is frustrating, since you trying to see in app.config that if there's a another string and you see only 1 string, Actually What VS does is sometimes append second string in the same line. see this picture below
Does it look like there are 2 ConnectionStrings? (ACTUALLY YES)
Now, see this pic:
Also you can press Ctrl+ED to format the config file and see if there's another second string hiding somewhere. Hope this will help someone.
im so sorry for my english
but the solution is simply.
you have to delete the ado.net
then, go to app.conf and delete the connection string<>,
DEBUG your project and finally add the new database through ado.net
TO ADD ADO.NET
RIGHT CLICK ON YOUR PROJECT NAME, THEN, ADD NEW ITEM, DATA AND SEARCH ADO.NET...
I hope help you, have good day!
angelsantacruzm

How to change iPhone App name 100%!

Can't seem change the name of my iPhone app 100%.
I followed multiple threads and performed the outlined methods below, but the old name keeps popping back up in Console. I'm concerned that on some deeper level the app's name has not really been changed 100%.
My concern is with the fact that I've made a "Lite" version by starting with a copy of the "Full" version. So I don't want the device to get confused if my customers upgrade and download the full version and the device see two apps with the same "CORE or ROOT" name.
Console continues to output:
2010-07-03 10:56:35.129 *OldAppName* [45672.207] Test Message
I have changed the Product_name, ".app" name, Bundle name, etc... - Where does "Console" get this name, so I can truly change the app's name 100%? I don't want an conflicts with the full version down the road as the apps grown independently in complexity. (i.e. Push Notifications, iAds, and other "APP" specific items)
I have performed the following, but still not getting 100% name change:
I. I have used Xcode, Project, Rename.
II. I have used the suggested answer on stackoverflow thread, Changing iPhone App's Name, to
Go to Targets in Xcode,
"Get Info" on your project's target (your current silly development name),
Search for "Product Name" under "Packaging". Change the value of that what you want the new program name is going to be.
My "Product_Name" field was blank for all builds, I changed it to the new name, but I continue to get the console output referencing the OldAppName.
III. I'm not trying to change the "Bundle Name", those are the same, as this is a Lite Version. And changing this does not change the Console reference name anyway, I tried.
IV. I have deleted the entire "Build" folder several times to assure no legacy issues, but the name still does not change.
I'm currently working on a large copy/paste migration over to a new project to try and fix this completely with a new project, because I would like to get app uploaded to the AppStore asap, but there must be a better way of achieving this.
Where does the "Console" get this name? Does this mean that if my customers' download the full version that on some deeper level the device will get confused-(i.e. NSUserDefaults with the same names, running issue, sandbox issues, etc...)?
The names are not stored in the info.plist, they appear to just be referenced from the target, but when I search through the target, I don't even find the OldAppName, is their an additional storage file for this core information?
I would like to stay in Xcode if possible. I have seen suggestions about using other programs or trying to change the XML directly through text editor, but I don't want to accidentally leave a "Third-Party" application marker or trial that might get rejected by Apple Reviewer's as they seem to be coming down hard on this issue.
Any detailed suggestions??
I had the same problem about a year ago.
I've got really nice & easy solution for your needs. You need to click on the "superview" of blue icon (Project/Targets) and then hit enter to change the name of the project. You can also double click on that field, but you need to do it with quite a long delay between clicks.
This method will change magically name of the project in all important places.
http://i.stack.imgur.com/3f1RD.png
Only Solution that Worked, and it was the one that feared the most and was trying to avoid.
I had to start a new project and painstakingly move all 96 class files (about 27mb of text) over one by one, because dragging the classes over kept giving me an error. I tried dragging over the classes as one large group, but that would not work. A little "re-factoring", rebuilding the .plist info, and setting up the new targets, and it I got it working again. I think that there was some sort of legacy issues that Xcode was getting caught up on.
It is working now under a new project, but there must be a better way.
Have you tried opening all files in your project in a text editor and searching for the old name?
Have you tried creating a new empty project and merely adding your content and code files to this empty project?
I have done these in the past and found they work fine:
http://drjunker.org/2008/04/10/xcode-rename-project-and-application-change-copyright-and-version-number/
http://homepage.mac.com/kelleherk/iblog/C1216817469/E1454445171/index.html
I also Clean All Targets/Builds and rename the Executable after.
I had a problem when there was a localized strings (infoPlist.strings) file in project with "CFBundleDisplayName"="MyOldAppName" in it. Removing this file and renaming target to my NewAppName worked for me.

Move datamodel to new project

I have re-created my iphone app project from scratch. I added my source and datamodel files into the new project. I have the new project compiling and working.
Now I notice that the app created by my new project is not 'compatible' with my old app. If I have an existing database on the device/simulator, the new app does not recognize the datamodel, it thinks things have changed. I get errors:'Can't merge models with two different entities named 'Event'
How do I properly move my datamodel from old project to new project in a way that everything still works? I have been simply adding in the projectName.xcdatamodelId source files and compiling. Is there something else that I need to do?
At first I thought that this was happening because I had renamed the files to match the new project name, but I have tried without renaming and am seeing the same problem.
Thanks for any help you can provide!
UPDATE:
OK, maybe it was the renaming. I cleaned up and rebuilt fresh and it seems to be working again. It looks like the first time I tried the failure messed things up on the existing database. Can anyone confirm that renaming is problematic, or explain how this can be done correctly?

How can I tell xCode to recheck project resources that have been modified?

I'm working with a designer friend on an iPhone app and he likes to refine all sorts of images relating to the project we're working on. All these images have been added to the project previously (and added to the project folder by xcode) and then are modified in their new location. When I preview the images in xCode, the updated images show up but building and running in the simulator or on a device doesn't pick up the new image. In fact, if I do a clean build it seems to ignore the image all together and blank spaces appear where images should be.
Now, I can delete these files from the project and re-add them and everything works peachy again. But there are a lot of them and I'd rather not do that every time an image is updated. Is there a way to get xCode to review and "learn" about these modified images? Is there a good reason for why it's not doing that automatically?
You didn't specify how you're including those image resources into your project, but I'd guess you're including them directly. So unless there's an underlying process that's changing the file in-place (are you using an SCM like Subversion or Perforce?) you're going to be forced to manually overwrite the files whenever your artist friend updates them.
You should include art assets in the project using a folder reference instead. (I'm still assuming you have some sort of SCM set up to handle exchanging data -- if you don't, set one up ASAP.) However, there are still some outstanding Xcode bugs related to picking up changes to files in a nested folder hierarchy included by reference, but at least you can work around that by doing clean builds when necessary.

XCode copies blank database when doing build

I've noticed that even though I placed my sqlite3 database in the "resources" folder, and even though I checked the "Copy file" box, when I do a build, XCode creates an empty database toi the application folder it's building...so it's FINDING the database, and OPENING it, but there's nothing IN it, so when I do a sqlite3_prepare_v2, I get a SQLITE_ERROR...
Help! What am I doing wrong?
This tutorial helps you setup an SQL database that will be included with your program:
SQLite To Do Tutorial
That might help you find something you've missed. I'm assuming that since you're getting SQLITE_ERROR you've correctly included the libsqlite3.0.dylib. Are you sure that your database file is valid and was created correctly?