# Get an UTF8 encoded `char*` copy of `self`
fun utf8_string: NativeString in "ObjC" `{ return (char *)[self UTF8String]; `}
- redef fun to_s do return utf8_string.to_s
+ redef fun to_s do return utf8_string.to_s_with_copy
end
redef class NativeString
fun to_nsstring(length: Int): NSString in "ObjC" `{
return [[NSString alloc] initWithBytes:self
length:length
- encoding:NSASCIIStringEncoding];
+ encoding:NSUTF8StringEncoding];
`}
end
redef class Text
# Get a `NSString` from `self`
- fun to_nsstring: NSString do return to_cstring.to_nsstring(length)
+ fun to_nsstring: NSString do return to_cstring.to_nsstring(bytelen)
end
# Wrapper of byte buffers
# Number of bytes containted in `self`
fun length: Int in "ObjC" `{ return self.length; `}
- redef fun to_s do return bytes.to_s_with_length(length)
+ redef fun to_s do return bytes.to_s_with_copy_and_length(length)
end
# Error condition
return [self indexAtPosition: position];
`}
end
+
+# Interface to the defaults system for an app to customize its behavior to match a user's preferences
+extern class NSUserDefaults in "ObjC" `{ NSUserDefaults * `}
+ super NSObject
+
+ # Wraps: `[NSUserDefaults standardUserDefaults]`
+ new standard_user_defaults in "ObjC" `{
+ return [NSUserDefaults standardUserDefaults];
+ `}
+
+ # Wraps: `[NSIndexPath stringForKey:]`
+ fun string_for_key(key: NSString): NSString in "ObjC" `{
+ return [self stringForKey: key];
+ `}
+
+ # Wraps: `[NSIndexPath setObject: forKey:]`
+ fun set_object(value: NSObject, default_name: NSString)
+ in "ObjC" `{
+ [self setObject:value forKey:default_name];
+ `}
+end