开发者

CFPropertyList usage

i am trying to return a list of users whose accounts have expired from my server to my iphone objective c app using CFPropertyLIst but the data returned in the NSURLConnection callback is always null. I think my use of CFPropertyList may not be correct but can't work out why not

$query="SELECT user, UNIX_TIMESTAMP(created) AS created_ts FROM  accounts"
$result = mysql_query($query)  


$userarray = new CFArray ();
while($row = mysql_fetch_array($result))
{
    $user = $row['user'];
    $created_ts = $row['created_ts'];

   $entry = new CFDictionary();
   $entry->add('user', new CString($user));
   $entry->add('created_ts', new CFNumber($created_ts));
   $userarray->add($entry);

}

$plist = new CFPropertyList();
$plist->add($userarray);
$plist->toXML();
var_dump($plist);

Objective C

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // We have got everything so no longer need the connection so release it.
    [theConnection release];
    theConnection = nil;

NSString *errorString = nil;
NSArray *array = [[NSPropertyListSerialization 
                       propertyListFromData:theData
                       mutabilityOption:NSPropertyListImmutable
                       format:nil
                       errorDescription:&errorString] retain];

}

Here I'm always getting unexpected character o at line 1 because the format of the plist looks like this which appears ok but still always getting this error

object(CFPropertyList)#5 (17)

{ ["file:protected"]=> NULL

["format:protected"]=> int(0)

["value:protected"]=> array(1) {

[0]=> object(CFArray)#1 (2) { ["iteratorPosition:protected"]=> int(0) ["value:protected"]=> array(1) {

[0]=> object(CFDictionary)#2 (3) {

["iteratorPosition:protected"]=> int(0)

["iteratorKeys:protected"]=> NULL

["value:protected"]=> array(2) {

["user"]=> object(CFString)#3 (1) {

["value:protected"]=>

string(9) "anonymous"

}

["created_ts"]=>

object(CFNumber)#4 (1) {

["value:protected"]=>

int(1281263044)

开发者_如何学Go }

}

}

}

}

}

["iteratorPosition:protected"]=> int(0)

["iteratorKeys:protected"]=> NULL

["content:protected"]=> NULL

["pos:protected"]=> int(0)

["uniqueTable:protected"]=>

array(0) {

}

["countObjects:protected"]=> int(0)

["stringSize:protected"]=> int(0)

["intSize:protected"]=> int(0)

["miscSize:protected"]=> int(0)

["objectRefs:protected"]=> int(0) ["writtenObjectCount:protected"]=>int(0) ["objectTable:protected"]=> array(0) { }

["objectRefSize:protected"]=>int(0)

["offsets:protected"]=>

array(0) {

}

}


Your output there is not a plist; it's the internal representation of a CFPropertyList. Have a look at http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/plist.5.html for a short sample plist.

Your problem is that $plist->toXML() does not modify $plist; it returns a string of the XML representation of the $plist object. Change:

$plist->toXML();
var_dump($plist);

to

$xml = $plist->toXML();
var_dump($xml);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜