Is it safe to delete CFBundleInfoDictionaryVersion? - ios

I don't want my info.plist to be cluttered. Is it safe to delete CFBundleInfoDictionaryVersion? I tried removing it and run and the app still works fine.

No, its not safe.
There's really not more to say here.
EDIT: See what does the InfoDictionary version signify in the information property list (plist file)? for an in-depth answer...

Related

Create a plist outside Xcode?

In our app we have lots of photos that we need to read while using the app, we have to also orgenize them into groups/categories.
this option is to make a plist with their names, and just put them into the app and read the plist.
create folders inside the app, order them inside, and read the specific folder.
Option 2 took me days and I couldn't even make it work reliably, and it also seems not the right way to work for some reason.
Option 1, the problem is that if you have 100 files you have to edit your plist every time again for a new file you add.
Is there a way to make option 1 outside of xcode so I can put all files in a folder on my mac, get their plist, and put this plist inside Xcode ?
What's the right way to achieve this ?
plist is just a simple XML file. You can create the plist file and add to xcode as any normal file to the bundle and read it.
macOS comes with two command-line tools for manipulating plists:
/usr/bin/plutil can convert a plist between formats. You might like this because you could write your photo catalog in JSON using whatever tools you like, then convert it to a plist. Of course, then you could just use JSON directly in your app…
/usr/libexec/PlistBuddy (note that /usr/libexec is not normally in one's PATH) can modify a plist in place, adding, removing, or changing entries.
Both of these tools have man pages (man plutil, man PlistBuddy) and substantial built-in help (plutil -h, /usr/libexec/PlistBuddy -h).
First, you're making a false assumption. There is no need to use a plist file here. An ordinary text file listing the names will do just fine, and you can just make up your own format to dictate groups and suchlike. And that sort of file is trivially easy to maintain.
Second, your rather confused claim that "Option 2 took me days and I couldn't even make it work reliably, and it also seems not the right way to work for some reason" is just a cop-out. Folder references are not a difficult thing to use (you can configure them in the Finder, which is as simple as you can get), they do work just fine, and they are a perfectly reasonable solution here.

How to check if a file is read only?

Neither io nor lfs seem to have an option to check for this. I need to use this feature to simulate some code that does this check.
It seems there's an undocumented permissions field in the table returned by lfs.attributes(). Thanks to #siffiejoe for pointing this out, didn't see it when I read the code.
Another approach is of course to try to read from the file, that will always work but might be slower.
You could also try opening the file and setting a (temporary, of course) read lock on it. Not sure about the portability of file locking in Lua, though.
Note: checking if a file is readable and then doing something can break due to race conditions; the permissions of a file can change between your check and the following action.

How to encode or hide iOS app files?

i have an iOS App which loads and .txt file from app's root. If i use iFunBox or any iPhone Browsers i can see that .txt file, how can I hide it? I think it's all about security of this file, encode/decode. Please help me. Any advice, source codes, examples. I'm new here. thanks
The short answer: You can't
The long answer: No matter what you do, you will end up having a copy of the decrypted contents in memory at some point so a crafty cracker will be able to copy the contents out of memory. The best you can do is make it not worth their trouble. This includes using pure C, never storing the contents in one variable (always concat, etc), and encrypting the file with an industry standard encryption like AES-256. Good luck.
I'm not sure that it is possible to protect the file any more than what apple already does. Even if you could, I don't think It would really be worth your trouble to do so unless the .txt file is something that you really need to protect.

iOS: Deleting localized string files in an update

I have an application in the App Store with the string files localized. The thing is I want to submit an update with the string files only in english,but when I install the app from xcode(only with the string files in english) in a device that has already the application installed(from the App Store) I can see the strings in other languages than english.
If I install the app in a device without the application already installed I can only see the strings in english,regardless the selected language on the device.
I know one option is to change the name of the string files,but I was wondering if there is a smarter way of doing this.
Thanks a lot
The problem is likely that your old localised.strings file is still hanging around in a different location. When you add or change languages using localisation, the strings file may be moved to a different folder. When the delta update occurs it obtains the new strings file, but fails to delete the old one because it's in a different location. However that location is higher up the search tree, and so gets found first when the app looks for a string.
One potential solution, though not a nice one, is to rename your localized.strings file to something different, then use the localizedStringFromTable command in all places you previously used localizedString, naming your new file as the table of origin. It's not a pretty fix, but it should work.
Another potential solution if you only need one language is to ensure that the strings file is stored in exactly the same bundle location as the one in the previous version.
I solved the problem with this line in the file main.m, right before calling to UIApplicationMain():
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:#"en"] forKey:#"AppleLanguages"];
Basically it forces the app to be available in English only.

Check if NSURL is Local File

This is a pretty simple question- how can I check if a NSURL is linking to a local file?
I know, RTFM, but I checked the documentation and I don't seem to see any methods related to this.
The only methods I did find were -isFileReferenceURL and -isFileURL, but I think these only check if the URL directly links to a file.
Note: I'm making an iPhone app, so by "local file" I mean a .html file stored in the project's resources.
Thanks for any help in advance.
The -isFileURL will check if your URL uses the file: scheme. It doesn't check whether it's referencing an actual file.
There is -isFileReferenceURL as of iOS 5 that checks if the url is an file reference. Before 5.0, it did nothing according to the documentation..
Available in iOS 5.0 and later. (Symbol is present in iOS 4, but performs no operation.)
I hope this helps the new-comers...

Resources