NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; NSLog(@"%@", languages);
NSMutableArray count always returns zero
The code is as follows, rowsToUpdate is NSMutableArray *, [sites count] is greater than 0, and there is value for row index, but [rowsToUpdate count] always returns 0:
for (int i=0; i<[sites count]; i++) {
NSLog(@"row index: %i, %@", i, [NSString stringWithFormat:@"%i", i]);
[rowsToUpdate addObject:[NSString stringWithFormat:@"%i", i]];
NSLog(@"[rowsToUpdate count] = %i", [rowsToUpdate count]);
}
There is no obvious problem with the code, and it doesn’t make sense to return 0.
After a couple of search, I found it on stackoverflow.com that I missed the initialization for “rowsToUpdate”. The fix is as follows (a couple lines of code added):
if (rowsToUpdate == nil) {
rowsToUpdate = [[NSMutableArray alloc] init];
}
else {
[rowsToUpdate removeAllObjects];
}
for (int i=0; i<[sites count]; i++) {
NSLog(@"row index: %i, %@", i, [NSString stringWithFormat:@"%i", i]);
[rowsToUpdate addObject:[NSString stringWithFormat:@"%i", i]];
NSLog(@"[rowsToUpdate count] = %i", [rowsToUpdate count]);
}
Xcode Warning: “UIKeyboardBoundsUserInfoKey” is deprecated
NSURL Tips
# Loading a string from a website
(this will block until it loads)
NSURL *url;
NSData *data;
NSString *blork;
url = [NSURL URLWithString: @"https://langui.net/"];
data = [url resourceDataUsingCache: NO];
blork = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
# Loading an image from a website
(this will block until it loads)
NSURL *url;
NSData *data;
NSImage *blork;
url = [NSURL URLWithString: @"https://langui.net/wp-content/uploads/2011/03/banner.png"];
data = [url resourceDataUsingCache: NO];
blork = [[NSImage alloc] initWithData: data];
# Open an URL in iphone safari
NSURL *url = [NSURL URLWithString: @"https://langui.net/"];
[[UIApplication sharedApplication] openURL: url];
More tips available here: http://borkware.com/quickies/
Calling C Functions from Objective-C
As Objective-C is a superset of C, it allows developers to mix pure c source files with Object-C source files.
But to call a C function from Objective-C, you should not import the .c file in your Objective-C .m file, that won’t work.
To call a C function from the Objective-C, you need to create a .h header file to include the C function declaration, and, of cause, include the .h file in the .c source file where the C function resides. Then import the .h file in the .m source file where you would like to call the C function, and simply call the function.