This is the code I use for loading data from NSUserDefaults:
Sub SaveBoolean(key As String, value As Boolean)
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Sub setBool Lib FoundationLib Selector "setBool:forKey:" (NSUserDefaults As Ptr, value As Byte, key As CFStringRef) Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
setBool(standardUserDefaultsPtr, IIf(value, 1, 0), key)
Synchronize()
End
Sub SaveDate(key As String, value As Date)
Declare Function alloc Lib FoundationLib Selector "alloc" (NSClass As Ptr) As Ptr
Declare Function dateFromString Lib FoundationLib Selector "dateFromString:" (NSDateFormatter As Ptr, aString As CFStringRef) As Ptr
Declare Function init Lib FoundationLib Selector "init" (NSClass As Ptr) As Ptr
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Function systemTimeZone Lib FoundationLib Selector "systemTimeZone" (NSTimeZone As Ptr) As Ptr
Declare Sub setDateFormat Lib FoundationLib Selector "setDateFormat:" (NSDateFormatter As Ptr, format As CFStringRef)
Declare Sub setObject Lib FoundationLib Selector "setObject:forKey:" (NSUserDefaults As Ptr, NSDate As Ptr, key As CFStringRef)
Declare Sub setTimeZone Lib FoundationLib Selector "setTimeZone:" (NSDateFormatter As Ptr, NSTimeZone As Ptr)
Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
Static dateFormatterClassPtr As Ptr = NSClassFromString("NSDateFormatter")
Static timeZoneClassPtr As Ptr = NSClassFromString("NSTimeZone")
Static systemTimeZonePtr As Ptr = systemTimeZone(timeZoneClassPtr)
Dim dataFormatterPtr As Ptr = init(alloc(dateFormatterClassPtr))
setDateFormat(dataFormatterPtr, "YYYY-MM-dd HH:mm:ss") setTimeZone(dataFormatterPtr, systemTimeZonePtr)
Dim datePtr As Ptr = dateFromString(dataFormatterPtr, value.SQLDateTime)
setObject(standardUserDefaultsPtr, datePtr, key)
Synchronize()
End
Sub SaveDouble(key As String, value As Double)
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Sub setDouble Lib FoundationLib Selector "setDouble:forKey:" (NSUserDefaults As Ptr, value As Double, key As CFStringRef)
Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
setDouble(standardUserDefaultsPtr, value, key)
Synchronize()
End
Sub SaveInteger(key As String, value As Integer)
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Sub setInteger Lib FoundationLib Selector "setInteger:forKey:" (NSUserDefaults As Ptr, value As Int32, key As CFStringRef)
Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
setInteger(standardUserDefaultsPtr, value, key)
Synchronize()
End
Sub SaveString(key As String, value As String)
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Sub setObject Lib FoundationLib Selector "setObject:forKey:" (NSUserDefaults As Ptr, value As CFStringRef, key As CFStringRef)
Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
setObject(standardUserDefaultsPtr, value, key)
Synchronize()
End
Sub SaveStringArray(key As String, arr() As String)
Declare Function alloc Lib FoundationLib Selector "alloc" (NSClass As Ptr) As Ptr
Declare Function init Lib FoundationLib Selector "init" (NSClass As Ptr) As Ptr
Declare Function standardUserDefaults Lib FoundationLib Selector "standardUserDefaults" (NSUserDefaultsClass As Ptr) As Ptr
Declare Sub addObject Lib FoundationLib Selector "addObject:" (NSMutableArrayClass As Ptr, anObject As CFStringRef)
Declare Sub setObject Lib FoundationLib Selector "setObject:forKey:" (NSUserDefaults As Ptr, NSArray As Ptr, key As CFStringRef)
Static standardUserDefaultsPtr As Ptr = standardUserDefaults(NSClassFromString("NSUserDefaults"))
Static mutableArrayClassPtr As Ptr = NSClassFromString("NSMutableArray")
Dim mutableArrayPtr As Ptr = init(alloc(mutableArrayClassPtr))
For i As Integer = 0 To arr.Ubound
addObject(mutableArrayPtr, arr(i))
Next
setObject(standardUserDefaultsPtr, mutableArrayPtr, key)
Synchronize()
End