问题描述
|
我为iOS应用程序创建了一个设置捆绑包,并尝试编辑Root.plist文件。
我可以更改一些现有值(默认情况下创建的值),但是如果我尝试添加新项(无论类型如何),Xcode 4都会崩溃,并显示以下错误:
有人知道这可能是什么造成的吗?
我正在使用Xcode 4.02内部版本4A2002a。
这是日志:
ASSERTION FAILURE in /SourceCache/DVTKit/DVTKit-221/Framework/Classes/PlistView/DVTPlistDictionaryNode.m:171
Details: method -[DVTPlistDictionaryNode value] is inappropriate for instances of DVTPlistDictionaryNode
Object: <DVTPlistDictionaryNode: 0x202442340>
Method: -value
Thread: <NSThread: 0x200020700>{name = (null),num = 1}
Hints: None
Backtrace:
0 0x0000000100949773 -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageformat:arguments:] (in IDEKit)
1 0x000000010006d394 _DVTAssertionFailureHandler (in DVTFoundation)
2 0x00000001002ed3cb -[DVTPlistDictionaryNode value] (in DVTKit)
3 0x00000001002f0443 -[DVTPlistModel replacePlist:withPlist:] (in DVTKit)
4 0x00000001003030d4 -[DVTPlistViewController outlineView:setobjectValue:forTableColumn:byItem:] (in DVTKit)
5 0x00007fff8830e149 -[NSOutlineView _dataSourceSetValue:forColumn:row:] (in AppKit)
6 0x00007fff883c4dd9 -[NSTableView performClickOnCellAtColumn:row:] (in AppKit)
7 0x00007fff883c1200 -[NSTableView _attemptToPerformClickOnFocusedColumn] (in AppKit)
8 0x00007fff86bd511c __NSFireDelayedPerform (in Foundation)
9 0x00007fff867f5be8 __CFRunLoopRun (in CoreFoundation)
10 0x00007fff867f3dbf CFRunLoopRunSpecific (in CoreFoundation)
11 0x00007fff88f577ee runcurrentEventLoopInMode (in HIToolBox)
12 0x00007fff88f575f3 ReceiveNextEventCommon (in HIToolBox)
13 0x00007fff88f574ac BlockUntilNextEventMatchingListInMode (in HIToolBox)
14 0x00007fff87ec4e64 _DPSNextEvent (in AppKit)
15 0x00007fff87ec47a9 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit)
16 0x00007fff87e8a48b -[NSApplication run] (in AppKit)
17 0x00007fff87e831a8 NSApplicationMain (in AppKit)
18 0x0000000100000eec
19 0x0000000000000002
这是Xcode本身创建的root.plist的内容:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string>Group</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
<key>DefaultValue</key>
<string></string>
<key>IsSecure</key>
<false/>
<key>Key</key>
<string>name_preference</string>
<key>KeyboardType</key>
<string>Alphabet</string>
<key>Title</key>
<string>Name</string>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
<key>Key</key>
<string>enabled_preference</string>
<key>Title</key>
<string>Enabled</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<real>0.5</real>
<key>Key</key>
<string>slider_preference</string>
<key>MaximumValue</key>
<integer>1</integer>
<key>MaximumValueImage</key>
<string></string>
<key>MinimumValue</key>
<integer>0</integer>
<key>MinimumValueImage</key>
<string></string>
<key>Type</key>
<string>PSSliderSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
解决方法
听起来像是苹果的虫子。如果您告诉Xcode继续而不是崩溃,那么您可能可以继续工作,好像没有任何问题。如果所有其他方法均失败,则可以考虑使用PlistBuddy或使用默认值来操纵您的plist。 (属性列表Editor.app是理想的选择,但我认为Xcode 4安装中不包含它。)